再談Nginx Rewrite, 中文URL和其它

2021-09-07 02:56:43 字數 961 閱讀 4287

上次談到過nginx和中文url的問題,這幾天又加深了認識。 多分享幾個關於nginx rewrite的經驗。

nginx匹配指定中文url的方法:

rewrite "(*utf8)^xx$" /index.html last;

這個會將 重定向到

『/%e6%9b%b4%e6%94%b9′是中文url 『/更改』, xx是這兩個漢字的unicode編碼。

注意配合pcre 7.9以上版本使用,詳細看nginx和中文url的問題。

nginx匹配url中中文引數的方法:

如果要將 重定向到 則要使用

location = /index.php$

}

在這裡, 『?title=%e6%9b%b4%e6%94%b9′ 是不能用上例那裡的rewrite捕捉到的, 而要使用$arg_引數名這樣的方式處理。 而且在這裡, 『%e6%9b%b4%e6%94%b9′是不用特別轉換的,直接放上去就可以了。

還要注意到 location後面的 ~, *~, ^~, =或空是有不同的效果的。詳細參看nginx的官方手冊。

讓nginx在同時識別到兩個引數的情況下重定向的方法

假設要在例如 &lang=zh-tw 這樣的url,只有在lang=zh-tw引數存在,並且title引數也存在(不管它的值)的情況下才重定向, 要求會苛刻些,因為nginx自身沒有並列的邏輯處理能力,但可以使用如下的方法曲線解決:

location = /index.php

# 檢查lang引數是否為 "zh-tw":

if ( $arg_lang =zh-tw ) es";

}# 看看條件是否同時成立 "yes":

if ( $redirect = yes )

....

}

nginx rewrite 重寫規則

1注意點 在重寫的時候,一定要注意,if 和後面的括號是要有乙個空格的 if host com 2.在重寫的時候,需要使用正規表示式 host 代表網域名稱,首先判斷網域名稱,來看這個正則 rewrite de permanent 代表網域名稱下面的 com de 這個路徑下面的,重寫為 其中 1代...

nginx Rewrite語法詳解

重寫中用到的指令 if 條件 設定條件,再進行重寫 set 設定變數 return 返回狀態碼 break 跳出rewrite rewrite 重寫 跳轉的話url都變了,變成重新http請求404.html,而內部rewrite,上下文沒變,就是說 fastcgi script name 仍然是 ...

Nginx Rewrite規則初探

nginx rewrite nginx url位址重寫 rewrite 主要的功能就是實現url的重寫,nginx的rewrite規則採用pcre,perl相容正規表示式的語法規則匹配,如果需要nginx的rewrite功能,在編譯nginx之前,需要編譯安裝pcre庫。通過rewrite規則,可以...