その他
    ホーム 技術発信 DoRuby RewriteRuleとWordPressのRedirectionで日本語URLを扱う方法

    RewriteRuleとWordPressのRedirectionで日本語URLを扱う方法

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    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と同様)とエスケープしてあげる必要があります。
    やはり面倒ですね。

    記事を共有