nginx僞靜態在目錄後加斜杆/,指定後綴則不加

需要在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
 

總結:

主要是對正則需要熟悉

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章