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