海纳百客

海纳百客

nginx伪静态在目录后加斜杆/,指定后缀则不加

吃瓜阿阳

友情提示点击顶部放大镜 可以使用站内搜索 记住我们的地址 www.hainabaike.com

需要在url访问后缀加/ ,而html等指定后缀不需要加:

1
2
3
if ($request_uri  !~*  .html$) {
    rewrite ^(.*[^/])$ $1/ permanent;
}

但是这样.css或者.js也会被加上斜线,使用如下才最好:

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

 

 

也就说不包含.并且不以斜线/结尾的才加入。

当然还有如下:

1
2
3
if (-d $request_filename) {
    rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}

这个判断中,如果请求的是一个文件夹,会自动在最后加上/符号,如果请求的是一个文件,则不会改变原有url
接下来对这段代码进行一个解释
1、if (-d $request_filename),如果请求的是一个文件夹,则为真,进到if语句中执行
2、rewrite是执行url重写操作
3、^/(.*)([^/])$表示以/符号开始并紧跟着任何字符,同时不是以/为结束的字符串,在我的url中,(.*)表示的ww,([^/])表示的w
4、 http://$host/$1$2/ 表示的重写后的地址,$host是请求的域名,$1是前面第一个括号里的内容ww,在我的url里就是wordpres $2是前面第二个括号里的内容
5、permanent表示,返回永久重定向的HTTP状态301

总结:

主要是对正则需要熟悉

    标签:

    发布评论 条评论)

    评论列表