Nginx URL 重写
一、URL重寫介紹
和apache等web服務(wù)軟件一樣,rewrite的主要功能是實現(xiàn)URL地址的重定向。
Nginx的rewrite功能需要PCRE軟件的支持,即通過perl兼容正則表達式語句進行規(guī)則匹配的。
默認參數(shù)編譯nginx就會支持rewrite的模塊,但是也必須要PCRE的支持。
Rewrite功能是Nginx服務(wù)器提供的一個重要功能。
幾乎是所有的web產(chǎn)品必備技能,用于實現(xiàn)URL重寫。
URL重寫是非常有用的功能,比如它可以在我們在改變網(wǎng)站結(jié)構(gòu)后,不需要客戶端修改原來的書簽,也不需要其他網(wǎng)站修改對我們網(wǎng)站的友情鏈接,還可以在一定程度上提高網(wǎng)站的安全性,能夠讓我們的網(wǎng)站顯得更專業(yè)。
二、應(yīng)用場景
域名變更 (京東)
用戶跳轉(zhuǎn) (從某個連接跳到另一個連接)
偽靜態(tài)場景 (便于CDN緩存動態(tài)頁面數(shù)據(jù))
三、URL重寫原理
四、URL重寫
URL 模塊語法
set 設(shè)置變量 if 負責(zé)語句中的判斷 return 返回返回值或URL break 終止后續(xù)的rewrite規(guī)則 rewrite 重定向URLset指令 自定義變量
Syntax:set $variable value;Default:—Context:server, location, if將http://www.ayitula.com 重寫為 http://www.ayitula.com/baism:
location / {set $name baism;rewrite ^(.*)$ http://www.ayitula.com/$name;}if 指令 負責(zé)判斷
Syntax:if (condition) { ... }Default:—Context:server, location條件匹配
模糊匹配 ~匹配 !~不匹配 ~* 不區(qū)分大小寫的匹配
精確匹配 = !=
location / {root html;index index.html index.htm;if ($http_user_agent ~* 'Chrome') {break;return 403;#return http://www.jd.com;}}return 指令 定義返回數(shù)據(jù)
Syntax: return code [text];return code URL;return URL;Default: —Context: server, location, if location / {root html;index index.html index.htm;if ($http_user_agent ~* 'Chrome') {return 403;#return http://www.jd.com;} }break 指令 停止執(zhí)行當(dāng)前虛擬主機的后續(xù)rewrite指令集
Syntax: break;Default:—Context:server, location, if location / {root html;index index.html index.htm;if ($http_user_agent ~* 'Chrome') {break;return 403;} }rewrite指令 實現(xiàn)重寫url
rewrite <regex> <replacement> [flag];關(guān)鍵字 正則 替代內(nèi)容 flag標記
flag:
last #本條規(guī)則匹配完成后,繼續(xù)向下匹配新的location URI規(guī)則
break #本條規(guī)則匹配完成即終止,不再匹配后面的任何規(guī)則
redirect #返回302臨時重定向,瀏覽器地址會顯示跳轉(zhuǎn)后的URL地址
permanent #返回301永久重定向,瀏覽器地址欄會顯示跳轉(zhuǎn)后的URL地址
重定向就是將網(wǎng)頁自動轉(zhuǎn)向重定向,permanent和redirect從定向的區(qū)別
301永久性重定向:新網(wǎng)址完全繼承舊網(wǎng)址,舊網(wǎng)址的排名等完全清零
301重定向是網(wǎng)頁更改地址后對搜索引擎友好的最好方法,只要不是暫時搬移的情況,都建議使用301來做轉(zhuǎn)址。
302臨時性重定向:對舊網(wǎng)址沒有影響,但新網(wǎng)址不會有排名
搜索引擎會抓取新的內(nèi)容而保留舊的網(wǎng)址
permanent標志:永久重定向
www.ayitula.com 重寫為 www.jd.com server {listen 80;server_name www.ayitula.com;location / {rewrite ^/$ http://www.jd.com permanent;} }redirect標志:臨時重定向
域名跳轉(zhuǎn) www.ayitula.com 重寫為 www.jd.com server {listen 80;server_name www.ayitula.com;location / {rewrite ^/$ http://www.jd.com redirect;} }break標志: 類似臨時重定向
域名跳轉(zhuǎn) www.ayitula.com 重寫為 www.jd.com server {listen 80;server_name www.ayitula.com;location / {rewrite ^/$ http://www.jd.com break;} }last標志:
url重寫后,馬上發(fā)起一個新的請求,再次進入server塊,重試location匹配,超過10次匹配不到報500錯誤,地址欄url不變
last 一般出現(xiàn)在server或if中
根據(jù)用戶瀏覽器重寫訪問目錄
如果是chrome瀏覽器 就將 http://192.168.10.42/$URI重寫為 http://http://192.168.10.42/chrome/$URI實現(xiàn) 步驟 1)URL重寫 2)請求轉(zhuǎn)給本機locationlocation / { ..... if ($http_user_agent ~* 'chrome'){#^ 以什么開頭 ^a#$ 以什么結(jié)尾 c$#. 除了回車以外的任意一個字符#* 前面的字符可以出現(xiàn)多次或者不出現(xiàn)#更多內(nèi)容看正則表達式 rerewrite ^(.*)$ /chrome/$1 last;}location /chrome {root html ;index index.html;} }總結(jié)
以上是生活随笔為你收集整理的Nginx URL 重写的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nginx 下载限速
- 下一篇: Nginx静态资源站点——Nginx l