我正在運行 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。