Linux

新的永久連結結構:nginx 重寫循環

  • November 11, 2016

我在我的網站上建立了一個新的永久連結結構。添加一些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;
}

引用自:https://serverfault.com/questions/814289