Я использую 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 вы пытаетесь обработать конкретную кодировку особым образом, а в данном случае это просто не нужно.
Т.е.,
RewriteRule ^/users/(.*)$ /newusers/$1 [L]
будет соответствовать:
/users/café
и т. д. Однако имейте в виду, что использование таких классов символов, как , [a-zA-Z]
НЕ будет соответствовать utf8.