国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 網(wǎng)站 > Nginx > 正文

詳解常用的nginx rewrite重寫規(guī)則

2024-08-30 12:30:17
字體:
供稿:網(wǎng)友

本文提供一些常用的rewrite重寫規(guī)則,用來美化網(wǎng)頁的鏈接。規(guī)則里面的$1$2你不知道是怎么來的話,只要記住,第一個()里面的是$1,第二個()里面的是$2.

請求的URL是給人看的,重寫后的URL是給電腦看的。

執(zhí)行搜索

這個規(guī)則的目的是為了執(zhí)行搜索,搜索URL中包含的關(guān)鍵字。

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

用戶個人資料頁面

大多數(shù)運(yùn)行訪問者注冊的動態(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?;

類似百科的格式

這種格式特點(diǎn),一個前綴目錄,后跟文章名稱

請求的URL //hqidi.com/wiki/some-keywords
重寫后URL //hqidi.com/wiki/index.php?title=some-keywords
重寫規(guī)則         rewrite ^/wiki/(.*)$ /wiki/index.php?title=$1?;

論壇

論壇一般用到兩個參數(shù),一個話題標(biāo)識(topic)一個出發(fā)點(diǎn)(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結(jié)構(gòu)的特點(diǎn),由一個文章標(biāo)識符,后跟一個斜線,和一個關(guān)鍵字列表組成。

請求的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),默認(rèn)情況下參數(shù)會被自動附加到替換串上,可以通過在替換串的末尾加上?標(biāo)記來解決這一問題。

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

比較一個加上?標(biāo)記和不加?標(biāo)記的URL跳轉(zhuǎn)區(qū)別:

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

訪問//hqidi.com/test?id=5 經(jīng)過301跳轉(zhuǎn)后的URL地址為 //hqidi.com/home?id=5

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

訪問//hqidi.com/test?id=5 經(jīng)過301跳轉(zhuǎn)后的URL地址為 //hqidi.com/home

Nginx的rewrite功能需要PCRE軟件的支持,即通過perl兼容正則表達(dá)式語句進(jìn)行規(guī)則匹配的。默認(rèn)參數(shù)編譯nginx就會支持rewrite的模塊,但是也必須要PCRE的支持

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

nginx rewrite指令執(zhí)行順序

1.執(zhí)行server塊的rewrite指令(這里的塊指的是server關(guān)鍵字后{}包圍的區(qū)域,其它xx塊類似)
2.執(zhí)行l(wèi)ocation匹配
3.執(zhí)行選定的location中的rewrite指令

如果其中某步URI被重寫,則重新循環(huán)執(zhí)行1-3,直到找到真實(shí)存在的文件。

如果循環(huán)超過10次,則返回500 Internal Server Error錯誤。

flag標(biāo)志位

rewrite的語法很簡單,如:

rewrite regex URL [flag];

rewrite是關(guān)鍵字,regex是正則表達(dá)式,URL是要替代的內(nèi)容,[flag]是標(biāo)記位的意思,它有以下幾種值:

  • last: 相當(dāng)于Apache的[L]標(biāo)記,表示完成rewrite
  • break: 停止執(zhí)行當(dāng)前虛擬主機(jī)的后續(xù)rewrite指令集
  • redirect: 返回302臨時重定向,地址欄會顯示跳轉(zhuǎn)后的地址
  • permanent: 返回301永久重定向,地址欄會顯示跳轉(zhuǎn)后的地址

因?yàn)?01和302不能簡單的只返回狀態(tài)碼,還必須有重定向的URL,這就是return指令無法返回301,302的原因了。這里 last 和 break 區(qū)別有點(diǎn)難以理解:

  • last一般寫在server和if中,而break一般使用在location中
  • last不終止重寫后的url匹配,即新的url會再從server走一遍匹配流程,而break終止重寫后的匹配
  • break和last都能組織繼續(xù)執(zhí)行后面的rewrite指令

來看一個簡單實(shí)例:

rewrite ^/listings/(.*)$ /listing.html?listing=$1 last;rewrite ^/images/(.*)_(/d+)x(/d+)/.(png|jpg|gif)$ /resizer/$1.$4?width=$2&height=$3? last;

第一條重寫規(guī)則中,我們可以使用友好的URL:http://mysite.com/listings/123代替http://mysite.com/listing.html?listing=123,就相當(dāng)于我們在瀏覽器的地址欄中輸入http://mysite.com/listings/123后,實(shí)際訪問的URL資源是http://mysite.com/listing.html?listing=123。

第二條規(guī)則中,對形如http://mysite.com/images/bla_500x400.jpg的文件請求,重寫到http://mysite.com/resizer/bla.jpg?width=500&height=400地址,并會繼續(xù)嘗試匹配location。

if指令與全局變量

if指令語法為if(condition){...},對給定的條件condition進(jìn)行判斷。如果為真,大括號內(nèi)的rewrite指令將被執(zhí)行。

來看代碼規(guī)則:

if ($http_user_agent ~ MSIE) {  rewrite ^(.*)$ /msie/$1 break;} //如果UA包含"MSIE",rewrite請求到/msid/目錄下 if ($http_cookie ~* "id=([^;]+)(?:;|$)") {  set $id $1; } //如果cookie匹配正則,設(shè)置變量$id等于正則引用部分 if ($request_method = POST) {  return 405;} //如果提交方法為POST,則返回狀態(tài)405(Method not allowed)。return不能返回301,302 if ($slow) {  limit_rate 10k;} //限速,$slow可以通過 set 指令設(shè)置 if (!-f $request_filename){  break;  proxy_pass http://127.0.0.1; } //如果請求的文件名不存在,則反向代理到localhost 。這里的break也是停止rewrite檢查 if ($args ~ post=140){  rewrite ^ http://mysite.com/ permanent;} //如果query string中包含"post=140",永久重定向到mysite.com

if指令中,可以使用全局變量,這些變量有:

  • $args: #這個變量等于請求行中的參數(shù),同$query_string
  • $content_length: 請求頭中的Content-length字段。
  • $content_type: 請求頭中的Content-Type字段。
  • $document_root: 當(dāng)前請求在root指令中指定的值。
  • $host: 請求主機(jī)頭字段,否則為服務(wù)器名稱。
  • $http_user_agent: 客戶端agent信息
  • $http_cookie: 客戶端cookie信息
  • $limit_rate: 這個變量可以限制連接速率。
  • $request_method: 客戶端請求的動作,通常為GET或POST。
  • $remote_addr: 客戶端的IP地址。
  • $remote_port: 客戶端的端口。
  • $remote_user: 已經(jīng)經(jīng)過Auth Basic Module驗(yàn)證的用戶名。
  • $request_filename: 當(dāng)前請求的文件路徑,由root或alias指令與URI請求生成。
  • $scheme: HTTP協(xié)議(如http,https)。
  • $server_protocol: 請求使用的協(xié)議,通常是HTTP/1.0或HTTP/1.1。
  • $server_addr: 服務(wù)器地址,在完成一次系統(tǒng)調(diào)用后可以確定這個值。
  • $server_name: 服務(wù)器名稱。
  • $server_port: 請求到達(dá)服務(wù)器的端口號。
  • $request_uri: 包含請求參數(shù)的原始URI,不包含主機(jī)名,如:”/foo/bar.php?arg=baz”。
  • $uri: 不帶請求參數(shù)的當(dāng)前URI,$uri不包含主機(jī)名,如”/foo/bar.html”。
  • $document_uri: 與$uri相同。

使用return跳轉(zhuǎn)

我們有時需要在Nginx上使用rewrite做301地址跳轉(zhuǎn),比如以下規(guī)則:

rewrite ^ $scheme://www.mysite.com$request_uri permanent;

當(dāng)訪問任意url都會301永久定向到www.mysite.com的url上。這個寫法沒錯,但是因?yàn)槭褂昧藃ewrite的正則匹配,會損耗一部分資源,nginx官網(wǎng)不推薦這樣寫。我們可以使用return同樣可以實(shí)現(xiàn)301跳轉(zhuǎn),簡單實(shí)用,看實(shí)例:

301永久定向到新域名

server {  listen 80;  listen 443 ssl;  server_name www.old-name.com old-name.com;  return 301 $scheme://www.new-name.com;}

以上代碼實(shí)現(xiàn)了老域名301跳轉(zhuǎn)到新域名上,假如網(wǎng)站要更換新域名的話使用此方法做301跳轉(zhuǎn)。

不帶www的域名301跳轉(zhuǎn)到帶www的域名

server {  listen 80;  listen 443 ssl;  server_name mysite.com;  return 301 $scheme://www.mysite.com$request_uri;}

http站點(diǎn)301跳轉(zhuǎn)到https站點(diǎn)

server {  listen 80;  server_name www.mysite.com;  return 301 https://www.mysite.com$request_uri;}

以上就是有關(guān)Nginx的rewrite重寫與重定向的介紹,覺得有用就請練習(xí)多遍,收藏好此文不迷路。也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到服務(wù)器教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
在线观看wwww| 精精国产xxxx视频在线动漫| 伊人资源视频在线| 精品无人乱码| 99久久免费精品国产免费| 最近免费中文字幕在线第一页| 亚洲成人国产综合| 欧美视频免费一区二区三区 | 中文字幕在线观看av| 国产精品自产拍在线观看2019| 国产麻豆一级片| 国产区在线观看| 在线视频99| 国产一区在线视频观看| 中文字幕免费在线视频| 国产寡妇树林野战在线播放| 在线视频中文字幕| 福利视频网站导航| 天堂中文字幕在线| 在线中文视频| 国产在线二区| 精品国产白色丝袜高跟鞋| 免费a级人成a大片在线观看| 国产激情小视频在线| jizz性欧美| 国产夫妻视频| 中文字幕人成高视频| www狠狠操| 69精品视频| 中文字幕有码在线视频| gogogogo高清视频在线| 国产香蕉视频在线观看| h网址在线观看| 九九精品九九| 四虎成人免费| 永久免费av网站| 国产视频第一区| 成人欧美亚洲| www.香蕉视频在线观看| 精品一区二区91| 91国内在线| 国产视频精选在线| 天堂资源在线中文| 九九在线视频| 久色视频在线观看| 九九热在线免费视频| a视频在线播放| 四虎国产精品永久| 99中文字幕一区| 精品久久亚洲一级α| 国产二区三区四区| 777电影在线观看| 国产第一页在线| 在线播放www| 中文在线视频| 在线播放一区二区精品产| 亚洲网站视频在线观看| 精品国产高清自在线一区二区三区| √8天堂资源地址中文在线| 国产成免费视频| av免费在线播放| 欧美性猛交p30| 成人av小说网| 国产小视频在线播放| 国产二区三区在线| 亚洲v片在线观看| 狠狠干五月天| 国产区视频在线| 亚洲jjzzjjzz在线观看| 日本成人在线播放| 国产在线三区| 国产对白在线| 激情丁香久久| 在线视频婷婷| 国产卡二和卡三的视频| 九九在线观看免费视频| 国产福利热线视频| 欧美xxxxx性| 尤物在线视频| 亚洲视频日韩| 国产激情在线| 99视频资源网| 久久精品国产亚洲777| 国产三级做爰在线观看| a级片国产精品自在拍在线播放| 久久一本精品| 亚洲国产精华液| 国产三级在线免费| 国产免费专区| 国产在线中文字幕| 超碰97在线免费观看| 国产激情自拍视频| 99视频免费| h网址在线观看| 伊人222成人综合网| 国产天堂在线| 国产色在线播放| 国产免费福利| 欧美精品小视频| 91九色在线看| 91欧洲在线视精品在亚洲| 最新中文字幕在线| 黄色网页网址在线免费| 欧美日韩亚洲国内综合网| 中文乱码字幕av网站| 国产成人高清精品| 在线中文av| 伊人永久在线| 中文字幕av免费| 精品国内一区二区三区免费视频| 国产精品99爱免费视频| 国产网站在线免费观看| 国产黄色在线网站| 国产福利在线观看| 亚洲成年人视频| 免费黄网站在线观看| 九九热在线视频| 国产无套粉嫩白浆在线2022年| 国产一级网站视频在线| 天天操人人干| 国产h在线观看| 亚洲永久免费网站| 超碰在线中文| 国产一级黄色片免费| 国产成人精品综合网站| 在线视频观看亚洲| 欧美日韩一区二区三区视视频| 超碰在线国产| 国产高清视频在线| 日本不卡1区2区3区| 国产中文第一页| 精品麻豆国产| 国内外激情在线| 伊人av免费在线观看| 国产在线观看色| ·天天天天操| 国产毛片毛片| av在线官网| 国产亚洲精品久久久久久青梅| 国产啊啊啊视频在线观看| 青青艹在线视频| 2019天天操夜夜操| 中文字幕网在线| www.狠狠操| 99爱在线观看| 国产午夜视频| 成人精品一区二区三区免费| av免费在线一区二区三区| 丁香视频五月| av在线不卡播放| 精品视频一二区| 五月天婷婷基地| 玖玖在线视频| 日本高清中文字幕二区在线| 91视频黄色| 国产黄色一级电影| 中文字幕在线免费视频| 狠狠色丁香婷婷| www.香蕉视频在线观看| 一区二区三区四区在线免费视频| 国产一级在线观看www色| 超碰免费在线| 麻豆网站在线免费观看| av文字幕在线观看| 91麻豆福利| 精品国内一区二区三区免费视频| 国产福利片在线| 国产www.大片在线| 国产精品合集一区二区| 国产无遮挡又黄又爽免费软件 | 亚洲精品自拍区在线观看| 国产黄色高清在线| 国产视频福利| 国产精品久久麻豆| 国产第一页在线视频| 精品国产一区二区三区不卡在线| 91福利在线视频| 亚洲欧美精品中文第三| 一本免费视频| 任你操在线观看| 高潮白浆视频| 国产天堂资源| 日韩黄色成人| 黄网站在线观看高清免费| 国产乱人视频免费播放| 国产丝袜在线观看视频| 国产极品一区二区三区 | 51成人精品网站| 午夜在线网站| 国产鲁鲁视频在线观看特色| 国产精品久久久精品a级小说| 一本大道五月香蕉| 九九热视频在线| 国产福利在线观看| www.九九热.com| 中文字幕在线视频不卡| 在线视频婷婷| 国产秀色在线www免费观看| av中文资源在线| 国产小黄视频|