我正在运行一个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
任何想法,如果这是恶魔版本或别的东西?
(*UTF8)是不是一个有效的正则expression式,我不知道你为什么要求它 – 你的正则expression式中的.*之类的东西将匹配任何字符,UTF8编码或不。 你指的是perl – 而不是mod_rewrite,它需要明确的启用utf8的支持。
对于mod_rewrite,你正在试图以一种特殊的方式处理一个特定的编码,在这种情况下它就不需要了。
也就是说,
RewriteRule ^/users/(.*)$ /newusers/$1 [L]
将匹配:
/users/café
等等。 但是请记住,使用像[a-zA-Z]这样的字符类不会匹配utf8。