Назад | Перейти на главную страницу

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

Есть идеи, версия демона это или что-то еще?

(*UTF8) не является действительным регулярным выражением, и я не уверен, почему вы его запрашиваете - например, .* и тому подобное в вашем регулярном выражении будет соответствовать любому символу, в кодировке UTF8 или нет. Вы имеете в виду perl, а не mod_rewrite, который требует явного включения поддержки utf8.

Для mod_rewrite вы пытаетесь обработать конкретную кодировку особым образом, и в этом случае она просто не нужна.

Т.е.,

RewriteRule ^/users/(.*)$ /newusers/$1 [L]

будет соответствовать:

/users/café

и так далее. Однако имейте в виду, что использование таких классов символов, как [a-zA-Z] НЕ будет соответствовать utf8.