.htaccessなどで日本語を含むURLをリダイレクトできない理由と解決方法
.htaccessなどを使用して日本語を含むURLを別のURLにリダイレクトしようとして下記のように設定してもリダイレクトされない
RewriteRule ^%E3%83%86%E3%82%B9%E3%83%88 https://www.example.com/test.html [R=301,L]
理由としては、Apacheを利用している場合「URLエンコーディング」された文字「%」を「x」に自動的に変換してしまうため
ということで解決方法は「%」をすべて「\x」に置き換えて書くと動作する
RewriteRule ^\xE3\x83\x86\xE3\x82\xB9\xE3\x83\x88 https://www.example.com/test.html [R=301,L]
日本語URLへリダイレクトする場合でも同じような理屈だが、今度は「%」をすべて「\%」に置き換えて書くと動作する