需要在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
總結:
主要是對正則需要熟悉