NGINX 添加/去除 URL 末尾斜杠

1、添加

Nginx
1
rewrite ^(.*[^/])$ $1/ permanent;

可能导致的问题:对图片等静态资源加上/导致404

解决方法:改成

Nginx
1
2
3
if ($uri !~ ".*\.(gif|jpg|jpeg|png|bmp|swf|js|css)") {
    rewrite ^(.*[^/])$ $1/ permanent;
}

可能导致的问题:

和其他伪静态规则冲突,导致重定向到/index.php/...

目前无解,可以尝试修改放置此行代码的位置。

2、去除

Nginx
1
rewrite ^/(.*)/$ /$1 permanent;

3、注意事项

NGINX会默认添加斜杠,一般情况下不要乱改。

可能的应用场景:

程序支持带斜杠和不带斜杠,例如:

/thread/1
/thread/1/

都可以访问,那么搜索引擎大概率两个都会索引,导致分权。

那么,最好是把其中一种301重定向到默认的那一种。

最后,注意不要用

Nginx
1
2
3
location {
    ...
}

括起来,可能会导致失效,和NGINX伪静态规则的优先级有关,这里不多赘述。

参考

Nginx重写规则指南
http://www.ttlsa.com/nginx/nginx-rewriting-rules-guide/

NGINX 添加/去除 URL 末尾斜杠

https://blog.tsinbei.com/tw/archives/1032/

文章作者
Hsukqi Lee
发布于

2022-12-18

修改于

2023-05-18

许可协议

CC BY-NC-ND 4.0

# 学习  建站  编程  Nginx  网站

评论

昵称
邮箱
网址
暂无