我写下面的nginx配置文件,当我输入url http://xxx/zh_cn时,它会重定向到http://xxx/zh_cn/,但如果我删除“if(-d $ request_filename){}”,nginx将不会重定向路径,为什么?
location = / {
if ($http_accept_language ~* ^zh-cn) {
set $lang zh_cn;
rewrite ^/$ /$lang/index.html redirect;
}
}
location / {
if (-d $request_filename){}
try_files $uri $uri/index.html $uri.html /abc/$uri;
}
我知道代码“重写^ /(。*)([^ /])$ http:// $ host / $ 1 $ 2 / permanent”可以重定向路径,但为什么只是“if(-d $ request_filename) {}“还有效吗?
答案 0 :(得分:0)
来自If is evil的第三个例子。
在这种情况下,如果忽略了与目录匹配的斜杠请求,则会忽略您的try_files
并且nginx的默认行为将重定向到带斜杠的URL。