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 であり、utf8 サポートを明示的に有効にする必要がある mod_rewrite ではありません。

mod_rewrite の場合、特定のエンコーディングを特別な方法で処理しようとしていますが、この場合は必要ありません。

すなわち、

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

一致します:

/users/café

などです。ただし、のような文字クラスを使用すると、[a-zA-Z]utf8 と一致しないことに注意してください。

関連情報