Nginx的Rewrite設定及示例

2021-06-23 02:12:22 字數 1133 閱讀 3570

nginx以其良好的併發效能,目前正在逐漸取代apache成為大家的web server首選,但是nginx目前的中文資料很少,需要大家努力貢獻。

下面我介紹一下nginx的rewrite模組設定及wordpress和discuz的示例。nginx的rewrite規則比apache的簡單靈活多了,從下面介紹可見一斑。

首先,nginx可以用if進行條件匹配,語法規則類似c,舉例如下:

1、正規表示式匹配,其中:

* ~  為區分大小寫匹配

* ~* 為不區分大小寫匹配

* !~和!~*分別為區分大小寫不匹配及不區分大小寫不匹配

2、檔案及目錄匹配,其中:

* -f和!-f用來判斷是否存在檔案

* -d和!-d用來判斷是否存在目錄

* -e和!-e用來判斷是否存在檔案或目錄

* -x和!-x用來判斷檔案是否可執行

如:if (!-f $request_filename)

其次,nginx的rewrite規則與apache幾乎完全一致,所不同的是最後的flag標記,舉例如下:

rewrite ^/feed/$ last;

flag標記有:

* last 相當於apache裡的[l]標記,表示完成rewrite,不再匹配後面的規則

* break 與last類似

* redirect 返回302臨時重定向

* permanent 返回301永久重定向

wordpress的重定向規則:

if (!-e $request_filename)

discuz!的重定向規則:

if (!-f $request_filename)

nginx如果rewrite寫了很多條,很容易發現rewrite寫的沒問題,可是就是匹配不了,很可能已匹配到其它rewrite中去了。開啟rewrite的log,可以清晰的看到其匹配的先後順序,和那一條匹配了。

方法:1:在nginx.conf的http段加入如下:

rewrite_log on;

error_log logs/***error.log notice;

注意兩點:

1)在nginx.conf的http欄位加。

安裝配置 Nginx的Rewrite設定及示例

nginx以其良好的併發效能,目前正在逐漸取代apache成為大家的web server首選,但是nginx目前的中文資料很少,需要大家努力貢獻。下面我介紹一下nginx的rewrite模組設定及wordpress和discuz的示例。nginx的rewrite規則比apache的簡單靈活多了,從下...

Nginx的Rewrite的配置

nginx的rewrite 經過網上查閱和測試,發現nginx的rewrite規則和apache的rewite規則差別不是很大,幾乎可以直接使用。比如在apache中這樣寫規則 1rewrite 0 9 html viewthread.php?tid 1 last 而在nginx中寫成這樣寫是無法啟...

Nginx基礎的Rewrite規則

rewrite是nginx乙個特別重要的指令,該指令可以使用正規表示式改寫uri。可以指定乙個或多個rewrite指令,按順序匹配 區分大小寫匹配 不區分大小寫匹配 和 區分大小寫不匹配及不區分大小寫不匹配 f和 f 判斷是否存在檔案 d和 d 判斷是否存在目錄 e和 e 判斷是否存在檔案或目錄 x...