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é

等等。但是,请记住,使用诸如 的字符类[a-zA-Z]将不会匹配 utf8。

相关内容