我有一个Cloudflare / Nginx(v1.8.0)/ Apache服务器configuration与大量的caching。
目标是caching主域,但允许通过所有caching绕过的子域访问站点。
所以,我正在寻找一种将“ https://www.domain.tld/target ”redirect到“ https://nocache.domain.tld/destination ”的通用方式
与request_uri的简单位置匹配对于非www域变体已经足够了,但是如果请求通过www子域进入,就像许多网站一样,那么它会redirect到nocache.www.domain.tld存在。
我尝试了各种不同的方法来删除“www”。 子string,但似乎没有工作。
编辑
这是我的非工作Nginx的服务器configuration:
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; }
这是您可以用于redirect的位置块
server { server_name www.domain.tld; location /target { rewrite /target(.*)$ /destination$1 last; return 301 https://nocache.domain.tld$request_uri; } }
www.domain.tld域 最后得到它的工作如下:
location ~* "/target" { if ( $host ~* "www\.(.*)" ) { return 302 https://nocache.$1/destination; } return 302 https://nocache.$host/destination; }
302的是为了testing,将被改为永久redirect。
感谢所有的回应。