WordPressのページ構成変更に伴い日本語URLを日本語URLにリダイレクトしようした時にハマったのでメモしておきます。
最終的には、WordPressのRedirectionプラグインを使う事にしましたが、RewriteRuleでも成功しています。
書き方が違うので注意が必要です。

RewriteRuleを使う場合

Apacheの設定ファイルまたは.htaccessでmod_rewriteを有効にしてある前提です。
「http://example.com/ほげ」にアクセスされた場合に「http://example.com/ほげほげ」にリダイレクトする例です。

RewriteRule ^/\xe3\x81\xbb\xe3\x81\x92$ /\%e3\%81\%bb\%e3\%81\%92\%e3\%81\%bb\%e3\%81\%92 [NE,R=301,L]

「ほげ」をUTF-8でURLエンコードしたのはこれ「%e3%81%bb%e3%81%92」です。
転送元のURIは「%」を「\x」に、転送先のURIは「%」を「\%」とエスケープしてあげる必要があります。
また、最後に「NE」を追加して、エスケープしないようにしてあげる必要があります。
面倒ですね。

WordPressのRedirectionプラグインを使う場合

WordPressにRedirectionプラグインがインストール&有効化されている前提です。
RewriteRuleと同様に「http://example.com/ほげ」にアクセスされた場合に「http://example.com/ほげほげ」にリダイレクトする例です。

ソースURL:/%e3%81%bb%e3%81%92
ターゲットURL:/\%e3\%81\%bb\%e3\%81\%92\%e3\%81\%bb\%e3\%81\%92

「ほげ」をUTF-8でURLエンコードしたのはこれ「%e3%81%bb%e3%81%92」です。
転送元のURIはそのまま(RewriteRuleと異なる)で、転送先のURIは「%」を「\%」(RewriteRuleと同様)とエスケープしてあげる必要があります。
やはり面倒ですね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です