常用的nginx rewrite重寫規則


本文提供一些常用的rewrite重寫規則,用來美化網頁的鏈接。規則里面的$1$2你不知道是怎么來的話,只要記住,第一個()里面的是$1,第二個()里面的是$2.
請求的URL是給人看的,重寫后的URL是給電腦看的。

執行搜索

這個規則的目的是為了執行搜索,搜索URL中包含的關鍵字。

請求的URL    //hqidi.com/search/some-search-keywords
重寫后URL    //hqidi.com/search.php?p=some-search-keywords
重寫規則            rewrite ^/search/(.*)$ /search.php?p=$1?;

 

用戶個人資料頁面

大多數運行訪問者注冊的動態網站都提供一個可以查看個人資料的頁面,這個頁面的URL包含用戶的UID和用戶名

請求的URL    //hqidi.com/user/47/dige
重寫后URL    //hqidi.com/user.php?id=47&name=dige
重寫規則            rewrite ^/user/([0-9]+)/(.+)$ /user.php?id=$1&name=$2?;

多個參數

有些網站對字符串參數使用不同的語法,例如 通過斜線“/”來分隔非命名參數

請求的URL    //hqidi.com/index.php/param1/param2/param3
重寫后URL    //hqidi.com/index.php?p1=param1&p2=param2&p3=param3
重寫規則            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
重寫規則	        rewrite ^/wiki/(.*)$ /wiki/index.php?title=$1?;

論壇

論壇一般用到兩個參數,一個話題標識(topic)一個出發點(starting post)

請求的URL    //hqidi.com/topic-1234-50-some-keywords.html
重寫后URL    //hqidi.com/viewtopic.php?topic=1234&start=50
重寫規則            rewrite ^/topic-([0-9]+)-([0-9]+)-(.*)\.html$ viewtopic.php?topic=$1&start=$2?;

新網站的文章

這種URL結構的特點,由一個文章標識符,后跟一個斜線,和一個關鍵字列表組成。

請求的URL    //hqidi.com/88/future
重寫后URL    //hqidi.com/atricle.php?id=88
重寫規則            rewrite ^/([0-9]+)/.*$ /aticle.php?id=$1?;

最后一個問號

若被替換的URI中含有參數(類似/app/test.php?id=5之類的URI),默認情況下參數會被自動附加到替換串上,可以通過在替換串的末尾加上?標記來解決這一問題。

rewrite ^/users/(.*)$ /show?user=$1? last;

比較一個加上?標記和不加?標記的URL跳轉區別:

rewrite ^/test(.*)$ //hqidi.com/home premanent;

訪問//hqidi.com/test?id=5 經過301跳轉后的URL地址為 //hqidi.com/home?id=5

rewrite ^/test(.*)$ //hqidi.com/home? premanent;

訪問//hqidi.com/test?id=5 經過301跳轉后的URL地址為 //hqidi.com/home


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM