Linux
新的永久連結結構:nginx 重寫循環
我在我的網站上建立了一個新的永久連結結構。添加一些nginx重寫規則後,有一個重定向循環到/vlogger/info/info/info/info/…
舊固定連結:
/vlogger/user-name
新的永久連結:
/vlogger/info/user-name
目前的 nginx 規則:
location ~ /vlogger/(.*)$ { rewrite ^/vlogger/info/$1 permanent; }
如何檢查第二個目錄( /vlogger/“info/” )是否始終設置並重定向成功而沒有循環?
(*使用者名僅包含:a-z0-9 和 -(減號))
我找到了解決方案:
rewrite ^/vlogger/([^/]*)$ /vlogger/info/$1 permanent;
這從 /vlogger/name 重定向到 /vlogger/info/name
Nginx在第一次匹配時終止正則表達式的搜尋。因此,只需在其上方放置一個更具體的匹配項。您需要再次使用正則表達式匹配 (imo),因為前綴匹配僅在沒有正則表達式匹配時使用。(我強烈建議閱讀手冊: http: //nginx.org/en/docs/http/ngx_http_core_module.html#location)
location ~ /vlogger/info/(.*)$ { # whatever you want to do with them } location ~ /vlogger/(.*)$ { rewrite ^ /vlogger/info/$1 permanent; }
請注意,在您的情況下可能不需要正則表達式(如果您有其他正則表達式,您可能需要使用正則表達式,imo。再次閱讀手冊條目)。使用前綴字元串可能會獲得更好的性能……
location /vlogger/info/ { # whatever you want to do with them } location /vlogger/ { rewrite ^ /vlogger/info/$1 permanent; }