Nginx URL重寫(rewrite)配置及信息詳解
URL重寫有利於網站首選域的確定,對於同一資源頁面多條路徑的301重定向有助於URL權重的集中
Nginx URL重寫(rewrite)介紹
和apache等web服務軟件一樣,rewrite的組要功能是實現RUL地址的重定向。Nginx的rewrite功能需要PCRE軟件的支持,即通過perl兼容正則表達式語句進行規則匹配的。默認參數編譯nginx就會支持rewrite的模塊,但是也必須要PCRE的支持
rewrite是實現URL重寫的關鍵指令,根據regex(正則表達式)部分內容,重定向到replacement,結尾是flag標記。
rewrite語法格式及參數語法說明如下:
rewrite <regex> <replacement> [flag];
關鍵字 正則 替代內容 flag標記
關鍵字:其中關鍵字error_log不能改變
正則:perl兼容正則表達式語句進行規則匹配
替代內容:將正則匹配的內容替換成replacement
flag標記:rewrite支持的flag標記
flag標記說明:
permanent #返回301永久重定向,瀏覽器地址欄會顯示跳轉後的URL地址
rewrite參數的標籤段位置:
server,location,if
例子:
rewrite ^/(.*) http://www.wmy.com/$1 permanent;
說明:
rewrite爲固定關鍵字,表示開始進行rewrite匹配規則
regex部分是 ^/(.*) ,這是一個正則表達式,匹配完整的域名和後面的路徑地址
replacement部分是http://www.wmy.com/$1 $1,是取自regex部分()裏的內容。匹配成功後跳轉到的URL。
flag部分 permanent表示永久301重定向標記,即跳轉到新的 http://www.wmy.com/$1 地址上
regex 常用正則表達式說明
字符
描述
\
將後面接着的字符標記爲一個特殊字符或一個原義字符或一個向後引用。如“\n”匹配一個換行符,而“\$”則匹配“$”
^
匹配輸入字符串的起始位置
$
匹配輸入字符串的結束位置
*
匹配前面的字符零次或多次
+
匹配前面的字符一次或多次
?
匹配前面的字符零次或一次
.
匹配除“\n”之外的任何單個字符,若要匹配包括“\n”在內的任意字符,請使用諸如“[.\n]”之類的模式。
(pattern)
匹配括號內pattern並可以在後面獲取對應的匹配,常用$0...$9屬性獲取小括號中的匹配內容,要匹配圓括號字符需要(Content)
rewrite 企業應用場景
Nginx的rewrite功能在企業裏應用非常廣泛:
可以調整用戶瀏覽的URL,看起來更規範,合乎開發及產品人員的需求。
爲了讓搜索引擎搜錄網站內容及用戶體驗更好,企業會將動態URL地址僞裝成靜態地址提供服務。
網址換新域名後,讓舊的訪問跳轉到新的域名上
根據特殊變量、目錄、客戶端的信息進行URL調整等
Nginx配置rewrite過程介紹
(1)創建rewrite語句
vi conf/www/wmy.conf
#vi編輯虛擬主機配置文件
文件內容
server {
listen 80;
server_name wmy.com;
rewrite ^/(.*) http://www.wmy.com/$1 permanent;
}
server {
listen 80;
server_name wmy.com;
location / {
root html/www;
index index.html index.htm;
}
error_log logs/error_www.wmy.log error;
access_log logs/access_wmy.log main;
}
(2)重啓服務
確認無誤便可重啓,操作如下:
nginx -t
#結果顯示ok和success沒問題便可重啓
nginx -s reload
(3)查看跳轉效果
打開瀏覽器訪問wmy.com
頁面打開後,URL地址欄的wmy.com變成了 http://www.wmy.com/$1 說明URL重寫成功。
注意清空緩存