日本語文字列を含むURLのRewrite

日本語文字列を含むURLでApacheのRewrite機能を使おうとして、ハマってしまいました。

(自分的に)普通に考えて、

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/aaa/%E6%97%A5%E6%9C%AC%E8%AA%9E$
RewriteRule .* /bbb/%E6%97%A5%E6%9C%AC%E8%AA%9E

という風に、URLエンコードした文字列を使って書いてみたのですが、うまくいきません。

いろいろ調べてみたところ、とりあえず解決方法は直接日本語で書くことみたいです。

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/aaa/日本語$
RewriteRule .* /bbb/日本語

理由はよく分かっていません。ブラウザの設定によっては違う文字コードでエンコードされて変な結果になるような気もします。

が、何故かうまく動きます。

日本語の文字列を使うといろいろとハマる原因になるので、極力使わない方がいいとは思いますが、使いたくなる場面もあって難しいですね。

コメントを残す

メールアドレスが公開されることはありません。