看到網上很多人都再說,在訪問帶目錄的url時,nginx不會自動加斜線,有的人加了rewrite來實現,有的人設置 server_name_in_redirect off來實現。我測試了下帶目錄時的情況,發現斜線是可以自動加上的,其他情況我測試了后再來補全吧。網上的文章不要隨便拿來用,至少也要先測試下,畢竟nginx也是在不斷發展。bug也一定在不斷被修復。
經過進一步測試,發現在訪問帶目錄的url時,nginx會自動加斜線,其實是在內部自動做了一個301跳轉,加了斜線??梢杂胔ttpwatch,或者 curl -I http://.../dir來測試。
這一切都跟這些有關:
在某些情況下(具體可參考 wiki.nginx.org),Nginx 內部重定向規則會被啟動,例如,當 URL 指向一個目錄并且在最后沒有包含“/”時,Nginx 內部會自動的做一個 301 重定向,這時會有兩種情況:
1、server_name_in_redirect on(默認),URL 重定向為: server_name 中的第一個域名 + 目錄名 + /;
2、server_name_in_redirect off,URL 重定向為: 原 URL 中的域名 + 目錄名 + /。
以上信息應該是在做rewrite時多注意,servername和alias??梢?,nginx現在是會自動加斜線的。歡迎大家也都發表下自己的看法。
新聞熱點
疑難解答