.htaccessを利用した日本語URLの転送(リダイレクト)設定で気をつけること

通常、Jimdoで作成したページURLは、ページの名称がそのままURLとなります。
つまり、日本語の名称を持ったページのURLは全て日本語URLとなります。

Jimdoには、JimdoPro/JimdoBusinessというプランで利用できるカスタムURL機能というものがあります。この機能を使えば、ページの日本語名称はそのままにURLを変更することができます。

そんなJimdoで作ったサイトをWordPressでリニューアルすることになり、旧ページから新ページに転送(リダイレクト)をかけました。

その際、うまく転送設定が動かなかったので、調べたところ日本語URLの転送設定にはちょっとしたコツが必要なことがわかりました。

そこで、今回は日本語URLの転送設定について紹介します。

  1. 一般的な転送設定
  2. 日本語URLでの転送設定
  3. 転送失敗の原因と解決方法
  4. まとめ

一般的な転送設定

「test1」から「test2」に転送させたい場合

.htaccessを利用した、一般的なリダイレクト設定は下記のとおりです。

RewriteEngine On
RewriteRule test1 "https://www.sendai-kuraso.com/test2" [R=301,L]

日本語URLでの転送設定

「テスト」から「test」に転送させたい場合

まずは、一般的なURLと同じように転送設定を書いてみます。

日本語URLは、ブラウザが「URLエンコーディング」で変換して表示してくれますので、日本語「テスト」はエンコーディングされると「%E3%83%86%E3%82%B9%E3%83%88」となります。

このエンコーディングされた文字列を.htaccessに書いて転送設定してみます。

RewriteEngine On
RewriteRule %E3%83%86%E3%82%B9%E3%83%88 "https://www.sendai-kuraso.com/test" [R=301,L]

結果としては、この記述では転送に失敗します。

転送失敗の原因と解決方法

なぜ転送に失敗したのか

エンコーディングされた文字列内「%」が「x」に自動変換されてしまうためです。
この自動変換によりURLとして成り立たなくなるため、転送失敗となってしまいます。

問題を解決するには?

この問題を解決するには、「%」の部分を「\x」に置き換える必要があります。
つまり、「%E3%83%86%E3%82%B9%E3%83%88」は「\xE3\x83\x86\xE3\x82\xB9\xE3\x83\x88」となります。

これを元にして設定した、転送設定がうまくいく書き方は下記のとおりです。

RewriteEngine On
RewriteRule \xE3\x83\x86\xE3\x82\xB9\xE3\x83\x88 "https://www.sendai-kuraso.com/test" [R=301,L]

この書き方であれば、正常に転送されます。

まとめ

もちろんそれ以外にも可能性はありますが、特にJimdoでサイトを作っている場合、どうしても日本語URLになりがちです。
そこから使用サービスを変え、旧ページから新ページに転送(リダイレクト)をかける場合、いつもの書き方ではうまく転送されません。

日本語URLでの転送設定では、エンコーディングされた文字列「%」の部分を「\x」に置き換える一工夫を忘れないようにしましょう。

書いた人:やまライダー(嫁)

Web屋さんで8時間フルタイム勤務をしている、いわゆるワーキングマザー。
夫婦共働きで、ムスメ氏を育てています。
主に資産運用にかかわるお金の話、ムスメ氏を育てていく上での子育ての話、そしてたまにお仕事関連の記事を書いていく予定。
プロフィールを見る