【備忘録】日本語URLの.htaccessのリダイレクト
リダイレクト前のURLはエンコードせず、
リダイレクト後のURLはエンコードする
WordPressのカテゴリ名を変更して、リダイレクトもお願いします、というご依頼。
カテゴリ名の変更は特に問題はないですが、
.htaccessのリダイレクトでまず私がつまづいたのは、
変更前のスラッグが日本語だったということでした。
例えば
変更前のスラッグ名:「活動報告」←日本語
変更後のスラッグ名:「activity」
とした時、
通常のリダイレクトなら、URLをコピーして .htaccess に…
こんな感じでうまくいくのでは…と思いましたが、
きちんとリダイレクトされず。 😥
NG例:
1 2 |
RewriteEngine on Redirect permanent /%E6%B4%BB%E5%8B%95%E5%A0%B1%E5%91%8A/ https://xxxxxxxxx.jp/activity/ |
このように書くとうまくいきました。
成功例:
1 2 |
RewriteEngine on Redirect permanent /活動報告/ https://xxxxxxxxx.jp/activity/ |
日本語でいいんですね…
😯
今回は、
変更後のスラッグは半角小文字で登録したのですが、
どうやら、
日本語URLの場合は、
リダイレクト前のURLはエンコードせず、
リダイレクト後のURLはエンコードする必要がある模様。
また、サーバーによっては
.htaccess の文字コードは「UTF-8」になっているかどうかも要確認です。
WordPressのスラッグは、日本語でも通用してしまう
WordPressで新規カテゴリーを追加する際、
”スラッグ”はURLに適した形式の名前です。通常はすべて半角小文字で、英数字とハイフンのみが使われます。
という記載がありますが、
日本語を入れてもそのまま設定されます。
また、
スラッグを空欄にしたままカテゴリーを追加すると、
カテゴリーの名前がそのままスラッグにも反映されるので、結局日本語になってしまうというケースが多いようです。
新規カテゴリ追加の際、スラッグを空欄のままにすると
カテゴリの名前に「テスト」、
スラッグを空欄にして追加すると、
名前に入力した日本語がそのままスラッグに反映されます
名前に入力した「テスト」が、
そのままスラッグにも登録されました。
これが結局URLになるのですが、
「スラッグ」と言われても、なかなか難しいですよね… 😕
日本語は、URLエンコーディングされて表示される
URLに含まれている日本語は、
URLエンコーディングされて表示されます。
ここで日本語にて「活動報告」とスラッグを設定したとすると、
URLはURLエンコーディングされ、
https://xxxxxxxxx.jp/%E6%B4%BB%E5%8B%95%E5%A0%B1%E5%91%8A
となります。
ブラウザ上では
https://xxxxxxxxx.jp/活動報告
と表示されているかもしれませんが、
ブラウザからURLをコピーして、メモ帳に貼り付けしてみると、
URLエンコーディングされていることを確認することができます。
個人的には、
スラッグは日本語を避けていただくことをおススメします。
こちらの記事を参考にさせていただきました。ありがとうございます。 😳 😳 😳
- 日本語URLを含むリダイレクトの罠にかかっても無事でいられる2つの対策
https://alaki.co.jp/blog/?p=2394 - 【.htaccess】日本語あれこれで301リダイレクトに失敗する場合の対処法
https://ysklog.net/server/2440.html
この記事の投稿者
iziz