Nginx
Nginx:將 https://www.domain.tld/target 重定向到 https://nocache.domain.tld/destination
我有一個帶有大量記憶體的 Cloudflare/Nginx(v1.8.0)/Apache 伺服器配置。
目標是記憶體主域,但允許通過繞過所有記憶體的子域訪問站點。
所以,我正在尋找一種將“ https://www.domain.tld/target ”重定向到“ https://nocache.domain.tld/destination ”的通用方法
對於非 www 域變體,與 request_uri 進行簡單的位置匹配就足夠了,但是如果請求來自 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; } }
- server_name 限制重定向到
www.domain.tld
域- 該位置與所有以 /target 開頭的 URI 匹配
- rewrite 指令將 /target 轉換為 /destination 並保留之後出現的任何內容
- 返回將重定向推送到另一個域
- 如果您不希望使用者被重定向,您也可以使用代理傳遞來執行此操作