新聞中心
本文提供一些常用的rewrite重寫規(guī)則,用來美化網(wǎng)頁的鏈接。規(guī)則里面的$1$2你不知道是怎么來的話,只要記住,第一個()里面的是$1,第二個()里面的是$2.
請求的URL是給人看的,重寫后的URL是給電腦看的。
執(zhí)行搜索
這個規(guī)則的目的是為了執(zhí)行搜索,搜索URL中包含的關鍵字。
請求的URL //hqidi.com/search/some-search-keywords
重寫后URL //hqidi.com/search.php?p=some-search-keywords
重寫規(guī)則 rewrite ^/search/(.*)$ /search.php?p=$1?;
用戶個人資料頁面
大多數(shù)運行訪問者注冊的動態(tài)網(wǎng)站都提供一個可以查看個人資料的頁面,這個頁面的URL包含用戶的UID和用戶名
請求的URL //hqidi.com/user/47/dige
重寫后URL //hqidi.com/user.php?id=47&name=dige
重寫規(guī)則 rewrite ^/user/([0-9]+)/(.+)$ /user.php?id=$1&name=$2?;
多個參數(shù)
有些網(wǎng)站對字符串參數(shù)使用不同的語法,例如 通過斜線“/”來分隔非命名參數(shù)
請求的URL //hqidi.com/index.php/param1/param2/param3
重寫后URL //hqidi.com/index.php?p1=param1&p2=param2&p3=param3
重寫規(guī)則 rewrite ^/index.php/(.*)/(.*)/(.*)$ /index.php?p1=$1&p2=$2&p3=$3?;
類似百科的格式
這種格式特點,一個前綴目錄,后跟文章名稱
請求的URL //hqidi.com/wiki/some-keywords
重寫后URL //hqidi.com/wiki/index.php?title=some-keywords
重寫規(guī)則 rewrite ^/wiki/(.*)$ /wiki/index.php?title=$1?;
論壇
論壇一般用到兩個參數(shù),一個話題標識(topic)一個出發(fā)點(starting post)
請求的URL //hqidi.com/topic-1234-50-some-keywords.html
重寫后URL //hqidi.com/viewtopic.php?topic=1234&start=50
重寫規(guī)則 rewrite ^/topic-([0-9]+)-([0-9]+)-(.*)\.html$ viewtopic.php?topic=$1&start=$2?;
新網(wǎng)站的文章
這種URL結構的特點,由一個文章標識符,后跟一個斜線,和一個關鍵字列表組成。
請求的URL //hqidi.com/88/future
重寫后URL //hqidi.com/atricle.php?id=88
重寫規(guī)則 rewrite ^/([0-9]+)/.*$ /aticle.php?id=$1?;
最后一個問號
若被替換的URI中含有參數(shù)(類似/app/test.php?id=5之類的URI),默認情況下參數(shù)會被自動附加到替換串上,可以通過在替換串的末尾加上?標記來解決這一問題。
rewrite ^/users/(.*)$ /show?user=$1? last;
比較一個加上?標記和不加?標記的URL跳轉區(qū)別:
rewrite ^/test(.*)$ //hqidi.com/home premanent;
訪問//hqidi.com/test?id=5 經(jīng)過301跳轉后的URL地址為 //hqidi.com/home?id=5
rewrite ^/test(.*)$ //hqidi.com/home? premanent;
訪問//hqidi.com/test?id=5 經(jīng)過301跳轉后的URL地址為 //hqidi.com/home
Nginx的rewrite功能需要PCRE軟件的支持,即通過perl兼容正則表達式語句進行規(guī)則匹配的。默認參數(shù)編譯nginx就會支持rewrite的模塊,但是也必須要PCRE的支持
rewrite是實現(xiàn)URL重寫的關鍵指令,根據(jù)regex(正則表達式)部分內容,重定向到replacement,結尾是flag標記。
nginx rewrite指令執(zhí)行順序
1.執(zhí)行server塊的rewrite指令(這里的塊指的是server關鍵字后{}包圍的區(qū)域,其它xx塊類似)
2.執(zhí)行l(wèi)ocation匹配
3.執(zhí)行選定的location中的rewrite指令
如果其中某步URI被重寫,則重新循環(huán)執(zhí)行1-3,直到找到真實存在的文件。
如果循環(huán)超過10次,則返回500 Internal Server Error錯誤。
flag標志位
rewrite的語法很簡單,如:
rewrite regex URL [flag];
名稱欄目:詳解常用的nginxrewrite重寫規(guī)則-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://www.ef60e0e.cn/article/ddhcgs.html