1、添加
1 | rewrite ^(.*[^/])$ $1/ permanent; |
可能导致的问题:对图片等静态资源加上/
导致404
解决方法:改成
1 | if ($uri !~ ".*\.(gif|jpg|jpeg|png|bmp|swf|js|css)") { rewrite ^(.*[^/])$ $1/ permanent; } |
可能导致的问题:
和其他伪静态规则冲突,导致重定向到/index.php/...
目前无解,可以尝试修改放置此行代码的位置。
2、去除
1 | rewrite ^/(.*)/$ /$1 permanent; |
3、注意事项
NGINX会默认添加斜杠,一般情况下不要乱改。
可能的应用场景:
程序支持带斜杠和不带斜杠,例如:
/thread/1
/thread/1/
都可以访问,那么搜索引擎大概率两个都会索引,导致分权。
那么,最好是把其中一种301
重定向到默认的那一种。
最后,注意不要用
1 | location { ... } |
括起来,可能会导致失效,和NGINX伪静态规则的优先级有关,这里不多赘述。
参考
Nginx重写规则指南
http://www.ttlsa.com/nginx/nginx-rewriting-rules-guide/
NGINX 添加/去除 URL 末尾斜杠
评论