URL重寫有利于網(wǎng)站首選域的確定,對于同一資源頁面多條路徑的301重定向有助于URL權(quán)重的集中。
與apache等web服務(wù)軟件一樣,rewrite的組要功能是實現(xiàn)URL地址的重定向。
Nginx的rewrite功能需要PCRE軟件的支持,即通過perl兼容正則表達式語句進行規(guī)則匹配的。默認參數(shù)編譯nginx就會支持rewrite的模塊,但是也必須要PCRE的支持
rewrite是實現(xiàn)URL重寫的關(guān)鍵指令,根據(jù)regex(正則表達式)部分內(nèi)容,重定向到replacement,結(jié)尾是flag標記。
rewrite <regex> <replacement> [flag];
關(guān)鍵字 正則 替代內(nèi)容 flag標記
關(guān)鍵字:其中關(guān)鍵字error_log不能改變
正則:perl兼容正則表達式語句進行規(guī)則匹配
替代內(nèi)容:將正則匹配的內(nèi)容替換成replacement
flag標記:rewrite支持的flag標記
flag標記說明:
last #本條規(guī)則匹配完成后,繼續(xù)向下匹配新的location URI規(guī)則
break #本條規(guī)則匹配完成即終止,不再匹配后面的任何規(guī)則
redirect #返回302臨時重定向,瀏覽器地址會顯示跳轉(zhuǎn)后的URL地址
permanent #返回301永久重定向,瀏覽器地址欄會顯示跳轉(zhuǎn)后的URL地址
server,location,if
rewrite ^/(.*) http://www.czlun.com/$1 permanent
說明:
rewrite為固定關(guān)鍵字,表示開始進行rewrite匹配規(guī)則
regex部分是 ^/(.*) ,這是一個正則表達式,匹配完整的域名和后面的路徑地址
replacement部分是http://www.czlun.com/$1 $1,是取自regex部分()里的內(nèi)容。匹配成功后跳轉(zhuǎn)到的URL。
flag部分 permanent表示永久301重定向標記,即跳轉(zhuǎn)到新的 http://www.czlun.com/$1 地址上
字符 \ 將后面接著的字符標記為一個特殊字符或一個原義字符或一個向后引用。如“\n”匹配一個換行符,而“\$”則匹配“$” ^ 匹配輸入字符串的起始位置 $ 匹配輸入字符串的結(jié)束位置 * 匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll” + 匹配前面的字符一次或多次。如“ol+”能匹配“ol”及“oll”、“oll”,但不能匹配“o” ? 匹配前面的字符零次或一次,例如“do(es)?”能匹配“do”或者“does”,"?"等效于"{0,1}" . 匹配除“\n”之外的任何單個字符,若要匹配包括“\n”在內(nèi)的任意字符,請使用諸如“[.\n]”之類的模式。 (pattern) 匹配括號內(nèi)pattern并可以在后面獲取對應(yīng)的匹配,常用$0...$9屬性獲取小括號中的匹配內(nèi)容,要匹配圓括號字符需要\(Content\) 描述