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...