濮阳杆衣贸易有限公司

主頁 > 知識庫 > Nginx URL重寫rewrite機(jī)制原理及使用實(shí)例

Nginx URL重寫rewrite機(jī)制原理及使用實(shí)例

熱門標(biāo)簽:江蘇自動(dòng)外呼系統(tǒng)一般多少錢 比較穩(wěn)定的外呼系統(tǒng) 云南云電銷機(jī)器人招商 ai電話機(jī)器人營銷 山東電信外呼系統(tǒng)靠譜嗎 400 電話 申請費(fèi)用 鸚鵡螺號航海地圖標(biāo)注時(shí)間 信貸電銷機(jī)器人系統(tǒng) 長沙回?fù)芡夂粝到y(tǒng)

URL重寫有利于網(wǎng)站首選域的確定,對于同一資源頁面多條路徑的301重定向有助于URL權(quán)重的集中

Nginx URL重寫(rewrite)介紹

和apache等web服務(wù)軟件一樣,rewrite的組要功能是實(shí)現(xiàn)RUL地址的重定向。Nginx的rewrite功能需要PCRE軟件的支持,即通過perl兼容正則表達(dá)式語句進(jìn)行規(guī)則匹配的。默認(rèn)參數(shù)編譯nginx就會(huì)支持rewrite的模塊,但是也必須要PCRE的支持

rewrite是實(shí)現(xiàn)URL重寫的關(guān)鍵指令,根據(jù)regex(正則表達(dá)式)部分內(nèi)容,重定向到replacement,結(jié)尾是flag標(biāo)記。

rewrite語法格式及參數(shù)語法說明如下:

rewrite <regex> <replacement> [flag];

關(guān)鍵字 正則 替代內(nèi)容 flag標(biāo)記

關(guān)鍵字:其中關(guān)鍵字error_log不能改變

正則:perl兼容正則表達(dá)式語句進(jìn)行規(guī)則匹配

替代內(nèi)容:將正則匹配的內(nèi)容替換成replacement

flag標(biāo)記:rewrite支持的flag標(biāo)記

flag標(biāo)記說明:

  • last #本條規(guī)則匹配完成后,繼續(xù)向下匹配新的location URI規(guī)則
  • break #本條規(guī)則匹配完成即終止,不再匹配后面的任何規(guī)則
  • redirect #返回302臨時(shí)重定向,瀏覽器地址會(huì)顯示跳轉(zhuǎn)后的URL地址
  • permanent #返回301永久重定向,瀏覽器地址欄會(huì)顯示跳轉(zhuǎn)后的URL地址

rewrite參數(shù)的標(biāo)簽段位置:

server,location,if

例子:

rewrite ^/(.*) http://www.czlun.com/$1 permanent;

說明:

  • rewrite為固定關(guān)鍵字,表示開始進(jìn)行rewrite匹配規(guī)則
  • regex部分是 ^/(.*) ,這是一個(gè)正則表達(dá)式,匹配完整的域名和后面的路徑地址
  • replacement部分是http://www.czlun.com/$1 $1,是取自regex部分()里的內(nèi)容。匹配成功后跳轉(zhuǎn)到的URL。
  • flag部分 permanent表示永久301重定向標(biāo)記,即跳轉(zhuǎn)到新的 http://www.czlun.com/$1 地址上

regex 常用正則表達(dá)式說明

字符

描述

\

將后面接著的字符標(biāo)記為一個(gè)特殊字符或一個(gè)原義字符或一個(gè)向后引用。如“\n”匹配一個(gè)換行符,而“\$”則匹配“$”

^

匹配輸入字符串的起始位置

$

匹配輸入字符串的結(jié)束位置

*

匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll”

+

匹配前面的字符一次或多次。如“ol+”能匹配“ol”及“oll”、“oll”,但不能匹配“o”

?

匹配前面的字符零次或一次,例如“do(es)?”能匹配“do”或者“does”,"?"等效于"{0,1}"

.

匹配除“\n”之外的任何單個(gè)字符,若要匹配包括“\n”在內(nèi)的任意字符,請使用諸如“[.\n]”之類的模式。

(pattern)

匹配括號內(nèi)pattern并可以在后面獲取對應(yīng)的匹配,常用$0...$9屬性獲取小括號中的匹配內(nèi)容,要匹配圓括號字符需要\(Content\)

rewrite 企業(yè)應(yīng)用場景

Nginx的rewrite功能在企業(yè)里應(yīng)用非常廣泛:

  • u 可以調(diào)整用戶瀏覽的URL,看起來更規(guī)范,合乎開發(fā)及產(chǎn)品人員的需求。
  • u 為了讓搜索引擎搜錄網(wǎng)站內(nèi)容及用戶體驗(yàn)更好,企業(yè)會(huì)將動(dòng)態(tài)URL地址偽裝成靜態(tài)地址提供服務(wù)。
  • u 網(wǎng)址換新域名后,讓舊的訪問跳轉(zhuǎn)到新的域名上。例如,訪問京東的360buy.com會(huì)跳轉(zhuǎn)到j(luò)d.com
  • u 根據(jù)特殊變量、目錄、客戶端的信息進(jìn)行URL調(diào)整等

Nginx配置rewrite過程介紹

(1)創(chuàng)建rewrite語句

vi conf/vhost/www.abc.com.conf

#vi編輯虛擬主機(jī)配置文件

文件內(nèi)容

server {
    listen 80;
    server_name abc.com;
    rewrite ^/(.*) http://www.abc.com/$1 permanent;
}
server {
    listen 80;
    server_name www.abc.com;
    location / {
        root /data/www/www;
        index index.html index.htm;
    }
    error_log  logs/error_www.abc.com.log error;
    access_log  logs/access_www.abc.com.log  main;
}

或者

server {
    listen 80;
    server_name abc.com www.abc.com;
    if ( $host != 'www.abc.com' ) {
        rewrite ^/(.*) http://www.abc.com/$1 permanent;
    }
    location / {
        root /data/www/www;
        index index.html index.htm;
    }
    error_log  logs/error_www.abc.com.log error;
    access_log  logs/access_www.abc.com.log  main;
}

(2)重啟服務(wù)

確認(rèn)無誤便可重啟,操作如下:

nginx -t

#結(jié)果顯示ok和success沒問題便可重啟

nginx -s reload

(3)查看跳轉(zhuǎn)效果

打開瀏覽器訪問abc.com

頁面打開后,URL地址欄的abc.com變成了www.abc.com說明URL重寫成功。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:嘉興 衡陽 拉薩 亳州 運(yùn)城 烏海 澳門 齊齊哈爾

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Nginx URL重寫rewrite機(jī)制原理及使用實(shí)例》,本文關(guān)鍵詞  Nginx,URL,重寫,rewrite,機(jī)制,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Nginx URL重寫rewrite機(jī)制原理及使用實(shí)例》相關(guān)的同類信息!
  • 本頁收集關(guān)于Nginx URL重寫rewrite機(jī)制原理及使用實(shí)例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    武城县| 四会市| 开远市| 江油市| 泽普县| 额济纳旗| 霍林郭勒市| 沁阳市| 高要市| 兴仁县| 岱山县| 商洛市| 揭西县| 景东| 西青区| 乐亭县| 朔州市| 东兰县| 芦山县| 麻栗坡县| SHOW| 朝阳市| 双峰县| 龙海市| 寿阳县| 临夏县| 江永县| 漠河县| 瑞金市| 渑池县| 凌云县| 建宁县| 穆棱市| 甘泉县| 衡东县| 汝州市| 湘阴县| 营口市| 彭阳县| 繁昌县| 龙南县|