为什么nginx将zh_cn重定向到zh_cn /?

时间:2015-05-28 10:32:38

标签: redirect nginx

我写下面的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) {}“还有效吗?

1 个答案:

答案 0 :(得分:0)

来自If is evil的第三个例子。

在这种情况下,如果忽略了与目录匹配的斜杠请求,则会忽略您的try_files并且nginx的默认行为将重定向到带斜杠的URL。