У меня есть конфигурация сервера 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
domain