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 と一致しないことに注意してください。