『htaccessに日本語URLはどう書いたらいいの?』
こういった疑問に答えます。
本記事の内容
- 日本語URLから英語URLへリダイレクトする書き方
- もしリダイレクトできなかったら
Webエンジニア歴1年
WordPressの運営&立ち上げ70サイト以上かかわっている
こういった私が解説していきます。
1. 日本語URLから英語URLへリダイレクトする書き方
- その①:日本語URLをそのまま記載する
- その②:日本語URLをそのまま記載してもダメだった
- その③:『%』を『\x』に書き換える
その①:日本語URLをそのまま記載する
・htaccessにリダイレクトを書く
リダイレクトは下記のようにして書きます。
1 2 |
RewriteEngine On RewriteRule リダイレクト前のURL リダイレクト後のURL [R=301,L] |
上記を参考にリダイレクトしたコードの例が下記です。
1 2 |
RewriteEngine On RewriteRule ^blog/https://masakichi-code.com/blog/wordpressのカスタム投稿の作り方【パターンごとでペー https://masakichi-code.com/blog/create_custom_archive [R=301,L] |
その①:日本語URLをそのまま記載してもダメだった
・なんでそのまま記載してもダメなのか
先ほどの方法でリダイレクトを記載してもだめでした。
実は私が、リダイレクト前のURLはエンコーディングされていないURLを記載すると勘違いしていたためでした。
正しくは、URLエンコーディングされたものに書き換える必要があります。
日本語URLをコピーして貼り付けたときにできる文字の羅列がそうですね。
1 |
https://masakichi-code.com/blog/wordpress%E3%81%AE%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E6%8A%95%E7%A8%BF%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9%E3%80%90%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E3%81%94%E3%81%A8%E3%81%A7%E3%83%9A%E3%83%BC/ |
・エンコーディングされた日本語URLでもダメ
そのままURLを貼り付けてもリダイレクト失敗でした。。。
実はApacheを使っているサーバー(大体使ってる)だと、『%』が『x』に変換されてしまうのが原因です。
□その②:『%』を『\x』に書き換える
なんと、『%』を『\x』と書き直してあげると、読み込んでくれるらしい…
一発置換で『%』を『\x』にした例が下記です。
1 2 |
RewriteEngine On RewriteRule ^blog/wordpress\xE3\x81\xAE\xE3\x82\xAB\xE3\x82\xB9\xE3\x82\xBF\xE3\x83\xA0\xE6\x8A\x95\xE7\xA8\xBF\xE3\x81\xAE\xE4\xBD\x9C\xE3\x82\x8A\xE6\x96\xB9\xE3\x80\x90\xE3\x83\x91\xE3\x82\xBF\xE3\x83\xBC\xE3\x83\xB3\xE3\x81\x94\xE3\x81\xA8\xE3\x81\xA7\xE3\x83\x9A\xE3\x83\xBC https://masakichi-code.com/blog/create_custom_archive [R=301,L] |
随分と長いコードになりましたが、これで解決できました。
2. もしリダイレクトできなかったら
- その①:htaccessの上の行に書く
- その②:それでもダメなら
その①:htaccessの上の行に書く
・htaccessは上から順にコードを読んでいく
例えば、下記のように全体をリダイレクトする記述がある場合、上に書いてみてください。
1 2 3 4 5 6 7 8 9 10 11 12 |
RewriteEngine On # WordPressのカスタム投稿の作り方のリダイレクト RewriteRule ^blog/wordpress\xE3\x81\xAE\xE3\x82\xAB\xE3\x82\xB9\xE3\x82\xBF\xE3\x83\xA0\xE6\x8A\x95\xE7\xA8\xBF\xE3\x81\xAE\xE4\xBD\x9C\xE3\x82\x8A\xE6\x96\xB9\xE3\x80\x90\xE3\x83\x91\xE3\x82\xBF\xE3\x83\xBC\xE3\x83\xB3\xE3\x81\x94\xE3\x81\xA8\xE3\x81\xA7\xE3\x83\x9A\xE3\x83\xBC https://masakichi-code.com/blog/create_custom_archive [R=301,L] # wwwから非wwwへのリダイレクト RewriteCond %{HTTP_HOST} ^www\.masakichi-code\.com$ [NC] RewriteRule ^(.*)$ https://masakichi-code.com/$1 [R=301,L] # HTTPからHTTPSへのリダイレクト RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://masakichi-code.com/$1 [R=301,L] |
『www』や『SSL』のリダイレクトが先に効いている場合があります。
その②:それでもダメなら
・お問い合わせからご相談ください
私がエンジニアになりたての頃、htaccessの設定で苦戦したことがあります。
困っている方の力に少しでもなりたいので、無料でアドバイスやコードの調整をしたいと思っています。
ぜひ、一緒に解決していきましょう。
以上、日本語のURLから英語URLへリダイレクトする書き方をご紹介しました。
ではまた。