Nginx location + 正規表示式出現301錯誤

牛平發表於2017-11-27
之前在配置nginx location時總是遇到301錯誤,百思不得其解,關鍵是我沒有用rewrite,但是我用了alias,因此懷疑是alias引起了301錯誤。
示例如下:
報錯示例:
index index.html
location  /zzp/ {
            alias /data/nginx/zzp/exact/;
}
location ~ ^/zzp/ {
     alias /data/nginx/zzp/regex/;
}


修正後的示例:

location  /zzp/ {
            alias /data/nginx/zzp/exact/;
}
location ~ ^/zzp/(.*\.html)$ {
     alias /data/nginx/zzp/regex/$1;
}

解析:
If alias is used inside a location defined with a regular expression then such regular expression should contain captures and alias should refer to these captures (0.7.40)

上面的話來自nginx的文件,意思是,當nginx的location是一個正規表示式時,這個正規表示式應該包含capture,並且alias中要引用這些capture,也就是$1那個部分。

再深究為什麼,在stackoverflow上面說是導致了內部重定向迴圈,但是沒看懂。







來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29757574/viewspace-2147809/,如需轉載,請註明出處,否則將追究法律責任。

相關文章