【Nginx學習】url地址補全最後的/(反斜槓)
阿新 • • 發佈:2018-12-25
問題描述
為什麼要這麼做
當Web伺服器接收到對某個末尾不含斜槓的url請求時,例如:http://www.360shouji.com/product,這時伺服器會搜尋網站根目錄下有沒有名為“product”的檔案,如果沒有就把product當做目錄處理,然後返回abc目錄下的預設首頁。當Web伺服器接收到的是末尾帶斜槓的請求時就會直接當做目錄處理。為了語義明確。當然現在很多應用程式是路由重寫路徑的。
配置方法
在nginx配置檔案中nginx.conf里加入如下程式碼
if (-d $request_filename){
rewrite ^/(.*)([^/])$ http: //$host/$1$2/ permanent;
}
這樣,nginx就會進行判斷了,如果請求的是一個資料夾,會自動在最後加上/符號,如果請求的是一個檔案,則不會改變原有url
接下來對這段程式碼進行一個解釋:
1,if (-d $request_filename),如果請求的是一個資料夾,則為真,進到if語句中執行
2,rewrite是執行url重寫操作
3,^/(.)([^/])$表示以/符號開始並緊跟著任何字元,同時不是以/為結束的字串,在我的url中,(.)表示的路徑的前面一截字元如:/abc/cde,([^/])表示不是以/為結束的字串
4,http://$host/$1$2/ 表示的重寫後的地址,$host是請求的域名,$
5,permanent表示,返回值是301