RewriteRule:無法編譯正規表示式。版本支援嗎?

RewriteRule:無法編譯正規表示式。版本支援嗎?

我正在運行 Ubuntu 10.04 LTS,Apache 版本 2.2.14。

在 httpd.conf 上,我有一個重寫規則,如下所示:

RewriteRule (*UTF8)^/users/([^/])([^/]+)/(.*)$ /users/$1/$2/$1$2/$3 [L]    

這個想法是在我的伺服器中將目錄設定為國際化域名(IDN)。

我不斷得到

RewriteRule: cannot compile regular expression

不知道是惡魔版還是其他版本?

答案1

(*UTF8)不是有效的正則表達式,我不確定您為什麼要求它 - 正則.*表達式中的類似內容將匹配任何字符,無論是否為 UTF8 編碼。您指的是 perl,而不是 mod_rewrite,它需要明確啟用 utf8 支援。

對於 mod_rewrite,您嘗試以特殊方式處理特定編碼,但在本例中不需要它。

IE,

RewriteRule ^/users/(.*)$ /newusers/$1 [L]

將匹配:

/users/café

等等。但是,請記住,使用像 utf8 這樣的字元類別[a-zA-Z]將不匹配 utf8。

相關內容