天天看點

nginx通路重定向rewrite

       nignx中使用ngx_http_rewrite_module子產品進行URL重寫,傳回頁面重定向,按條件選擇配置。編譯安裝nginx時預設已啟用此子產品。

   一般在server中定義rewite指令,為請求查找location,如果符合定義的規則,就重定向URI,按照新的URI查找location。

   if (CONDITION) {...}

   條件比對規則:

“=”或“!=”    進行精确比對

當使用“~”或“~*”時,比對條件中可以使用變量和正規表達式,正規表達式可以包含比對組,比對結果後續可以使用變量$1,..,$9引用。“~”比對時區分大小寫;“~*”比對時不區分大小寫。

使用“<code>-f</code>”和“<code>!-f</code>”運算符檢查檔案是否存在。

使用“<code>-d</code>”和“<code>!-d</code>”運算符檢查目錄是否存在。

使用“<code>-e</code>”和“<code>!-e</code>”運算符檢查檔案、目錄或符号連結是否存在。

使用“<code>-x</code>”和“<code>!-x</code>”運算符檢查可執行檔案;

rewrite regex replacement [flag];

   如果指定的正規表達式能夠比對URI,此URI将被replacement定義的字元串改寫。flag指定對指令做限制,flag可以為一下四個中的一種:

last 目前指令執行完後,繼續執行下面的指令集。

break 目前指令執行完後,即跳出指令集,不再執行下面的指令。

redirect 臨時重定向,302。

permanent 永久重定向,301。

    上面例子就是兩個重定向的例子,當URI中包含download|DOWNLOAD時,請求media中的檔案,重定向到mp3檔案夾中對應的檔案;請求audio中的檔案時,傳回mp3中對應的檔案。其中$1引用第一個括号中的檔案名,$2引用第二個括号中的檔案名。

這是一個永久重定向的例子,其中“?”比對表示比對他之前的字元零次或多次.

繼續閱讀