在nginx服务器中访问带目录的url时,不会自动加斜线,有的朋友加了rewrite来实现,有的朋友设置 server_name_in_redirect off来实现。
我测试了下带目录时的情况,发现斜线是可以自动加上的。
进一步测试,发现在访问带目录的url时,nginx会自动加斜线,其实是在内部自动做了一个301跳转,加了斜线。
可以用httpwatch,或者 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现在是会自动加斜线的。