1. 程式人生 > >【Nginx學習】url地址補全最後的/(反斜槓)

【Nginx學習】url地址補全最後的/(反斜槓)

問題描述

為什麼要這麼做

 當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是請求的域名,$

1是前面第一個括號裡的內容,在我的url裡就是/abc/cde 等一串字串 ,$2是前面第二個括號裡的內容,在我的url裡是

5,permanent表示,返回值是301