需要在url访问后缀加/ ,而html等指定后缀不需要加:
if ($request_uri !~* \.html$) {
rewrite ^(.*[^/])$ $1/ permanent;
}
但是这样.css或者.js也会被加上斜线,使用如下才最好:
rewrite ^([^.]*[^/])$ $1/ permanent;
也就说不包含.并且不以斜线/结尾的才加入。
当然还有如下:
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
总结:
主要是对正则需要熟悉