Nginx的Rewrite指令

Nginx重寫與轉(zhuǎn)發(fā)

Nginx通過ngx_http_rewrite_module模塊,實(shí)現(xiàn)Url的重寫和轉(zhuǎn)發(fā)。

對于Ng的Rewite指令來說,重寫和轉(zhuǎn)發(fā)其實(shí)存在一些區(qū)別的。眾可周知,Ng的Rewite指令如下:

  • 語法:rewrite 第一個參數(shù)[條件表達(dá)式] 第二個參數(shù)[替代目標(biāo)值] 第三個參數(shù)[flag];
  • 作用域:server 、location 、if

flag的參數(shù)有:

  1. last 相當(dāng)于apache里面的[L]標(biāo)記,默認(rèn)last,表示rewrite。
  2. break 本條規(guī)則匹配完成后,終止匹配,不再匹配后面的規(guī)則。
  3. redirect 返回302臨時(shí)重定向,瀏覽器地址會顯示跳轉(zhuǎn)后的URL地址。
  4. permanent 返回301永久重定向,瀏覽器地址會顯示跳轉(zhuǎn)后的URL地址。

注:如果 “ 第二個參數(shù)以 http://或https:// 開頭 ”,將直接重定向。

  • rewrite /(.*)$ http://m.xxx.com permanent;
  • rewrite ^/(.*)$ /index.php/wap/$1 last;
  • rewrite ^/(.*)$ /index.php/$1 last;
  • rewrite /(.*)$ http://b2c.xxx.com/$1 last;
Nginx實(shí)現(xiàn)偽靜態(tài)

注: 本例主要針對PHP

偽靜態(tài)是一種可以把PHP文件后綴改成任何文件后綴的方法,也可以用來隱藏入口文件,如:index.php

  1. http://b2c.xxx.com/index.php/product-545.html
  2. http://b2c.xxx.com/product-545.html

Nginx.conf 配置如下:

        # 偽靜態(tài)---begin-----
        if ($request_uri ~ (.+?\.php)(|/.*)$ ){
            break;
        }
        if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php/$1 last;
        }
        # 偽靜態(tài)---END-----
Nginx實(shí)現(xiàn)與或非

強(qiáng)大的Nginx居然不支持多重邏輯判斷( 即:and 與 or 或者 && 與 || ),簡直嚇屎哥了,怎么辦...幸好有Set指令。下面給兩個簡單的例子:

    set $wap_flsg 0;
    if ( $host = 'b2c.xxx.com' ) {
        set $wap_flsg "${wap_flsg}1";
    }
    if ( $request_uri ~ (/wap) ) {
            set $wap_flsg "${wap_flsg}1";
    }        
    if ( $wap_flsg = "011" ) {
        rewrite /(.*)$ http://m.xxx.com permanent;
    }
    set $master_domain 0; 
    if ( $host != 'b2c.xxx.com' ) {
        set $master_domain "${master_domain}1";
            #rewrite /(.*)$ http://b2c.xxx.com/$1 last;
    }
    if ( $host != 'm.xxx.com' ) {
        set $master_domain "${master_domain}1";
    }
    if ( $master_domain = "011") {
            rewrite /(.*)$ http://b2c.xxx.com/$1 last;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • nginx重寫規(guī)則 nginx rewrite 正則表達(dá)式匹配 大小寫匹配 ~ 為區(qū)分大小寫匹配 ~* 為不區(qū)分大...
    桖辶殤閱讀 5,701評論 0 2
  • 1.ngnix介紹 ngnix www服務(wù)軟件 俄羅斯人開發(fā) 開源 性能很高 本身是一款靜態(tài)WWW軟件 靜態(tài)小文件...
    逗比punk閱讀 2,231評論 1 6
  • Nginx簡介 解決基于進(jìn)程模型產(chǎn)生的C10K問題,請求時(shí)即使無狀態(tài)連接如web服務(wù)都無法達(dá)到并發(fā)響應(yīng)量級一萬的現(xiàn)...
    魏鎮(zhèn)坪閱讀 2,199評論 0 9
  • 上一篇《WEB請求處理一:瀏覽器請求發(fā)起處理》,我們講述了瀏覽器端請求發(fā)起過程,通過DNS域名解析服務(wù)器IP,并建...
    七寸知架構(gòu)閱讀 81,723評論 21 356
  • 第一章 Nginx簡介 Nginx是什么 沒有聽過Nginx?那么一定聽過它的“同行”Apache吧!Ngi...
    JokerW閱讀 33,009評論 24 1,002

友情鏈接更多精彩內(nèi)容