У меня есть конфигурация сервера Cloudflare / Nginx (v1.8.0) / Apache с большим количеством кеширования.
Цель состоит в том, чтобы кэшировать основной домен, но разрешить доступ к сайту через поддомен, на котором все кэширование обходится.
Итак, я ищу общий способ перенаправления "https: //www.domain.tld/target"к"https: //nocache.domain.tld/destination"
Простого сопоставления местоположения с request_uri достаточно для варианта домена без www, но если запрос поступает через поддомен www, как это делают многие сайты, он перенаправляется на nocache.www.domain.tld, который не существует.
Я пробовал всевозможные способы удалить www. подстрока, но ничего не работает.
РЕДАКТИРОВАТЬ
Вот мой нерабочий конфиг сервера Nginx:
server {
listen 80 default_server;
server_name localhost;
set $PROXY_DOMAIN_OR_IP $host;
if ( $request ~* ".*(www\.)(.*)\/target" ) {
set $host_without_www $2;
return 302 $scheme://nocache.${host_without_www}\/destination;
}
Наконец он заработал следующим образом:
location ~* "/target" {
if ( $host ~* "www\.(.*)" ) {
return 302 https://nocache.$1/destination;
}
return 302 https://nocache.$host/destination;
}
302-е были для тестирования и будут заменены на постоянные перенаправления.
Спасибо всем, кто откликнулся.
Вот блок местоположения, который вы можете использовать для перенаправления
server {
server_name www.domain.tld;
location /target {
rewrite /target(.*)$ /destination$1 last;
return 301 https://nocache.domain.tld$request_uri;
}
}
www.domain.tld
домен