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