The ngx_http_rewrite_module module is used tochange request URI using PCRE regular expressions,return redirects, and conditionally select configurations.-->將用戶請求的URI基於PCRE regex所描述的模式進行檢查,而後完成重定向替換
示例:
http://www.magedu.com/hn--> http://www.magedu.com/henan
http://www.magedu.com--> https://www.magedu.com/
1、rewrite regex replacement [flag]
將用戶請求的URI基於regex所描述的模式進行檢查,匹配到時將其替換爲replacement指定的新的URI注意:如果在同一級配置塊中存在多個rewrite規則,那麼會自下而下逐個檢查;被某條件規則替換完成後,會重新一輪的替換檢查隱含有循環機制,但不超過10次;如果超過,提示500響應碼,[flag]所表示的標誌位用於控制此循環機制如果replacement是以http://或https://開頭,則替換結果會直接以重向返回給客戶端301:永久重定向
[flag]:
last:重寫完成後停止對當前URI在當前location中後續的其它重寫操作,而後對新的URI啓動新一輪重寫檢查;提前重啓新一輪循環,不建議在lation中使用
break:重寫完成後停止對當前URI在當前location中後續的其它重寫操作,而後直接跳轉至重寫規則配置塊之後的其它配置;結束循環,建議在location中使用
redirect:臨時重定向,重寫完成後以臨時重定向方式直接返回重寫後生成的新URI給客戶端,由客戶端重新發起請求;不能以http://或https://開頭,使用相對路徑,狀態碼:302
permanent:重寫完成後以永久重定向方式直接返回重寫後生成的新URI給客戶端,由客戶端重新發起請求,狀態碼:301
2、return 停止處理,並返回給客戶端指定的響應碼
return code [text];
return code URL;
return URL;
3、rewrite_log on | off;
是否開啓重寫日誌, 發送至error_log(notice level)
4、set $variable value;用戶自定義變量
注意:變量定義和調用都要以$開頭
5、if (condition) { ... }('{}'必須加上)
引入新的上下文,條件滿足時,執行配置塊中的配置指令;server, location
condition:
比較操作符:
== 相同
!= 不同
~:模式匹配,區分字符大小寫
~*:模式匹配,不區分字符大小寫
!~:模式不匹配,區分字符大小寫
!~*:模式不匹配,不區分字符大小寫
文件及目錄存在性判斷:
-e, !-e 存在(包括文件,目錄,軟鏈接)
-f, !-f 文件
-d, !-d 目錄
-x, !-x 執行