RewriteRule:无法编译正则expression式。 版本支持?

我正在运行一个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。