見出し画像

日本語URLのページをリダイレクトしようとしてハマった件

サイトリニューアルをするとき、URLが変わってしまうページはリダイレクトの設定をするのが一般的です。ちゃんとリダイレクトさせていればSEO的なページ価値も引き継がれるので、サイト運用上とても重要な話です。

これをするためには、Webサーバに設置している.htaccess のファイルに

Redirect 301 [旧URL] [新URL]

みたいに書くわけです。お約束です。

日本語URLでハマる

一般的にURLに日本語を使っている場合、たいていはURLエンコードという処理をしてURLにマルチバイトの文字(簡単に言うと全角文字)が含まれないように変換します。

僕はリダイレクトの設定ファイルに書くURLも当然URLエンコードされてないとマズいだろうと思っていたので、以前会社のサイトをリニューアルしたときにもせっせと変換かけて結構な量のリダイレクト設定を用意したんですが、いざサーバに置いてみると全くリダイレクトされない。正直こんなことでつまづくとは思ってなかったので、ちょっと焦りました。


原因は .htaccessの文字コード

Google先生を頼りに調べてみると、リダイレクト元のURLをURLエンコードしてしまっていたことが問題で、わざわざ日本語URLを変換する必要は無いという情報に行き当たります。

しかもリダイレクト先は逆にURLエンコードしないとダメとか、その情報を載せていたサイトには書かれてました。ほんまかいな。


結論としてそれはほんまではなくて、それだけではリダイレクトされませんでした。

実はこの情報が書かれていたサイトにはもう1つ「.htaccessをutf-8で書く必要がある」という追記があり、実際に.htaccessの文字コードを変換して保存し直したらこの設定でちゃんとリダイレクトされるようになりました。


ですが、ここで1つ疑問が生じます。

実はこれ、単に .htaccessの文字コードの問題であって、URLエンコードしてあるかどうかは関係ないのでは…?


試してみると予想通り、URLエンコードの文字コードと .htaccessの文字コードが一致していれば、日本語URLはエンコードしてあってもしてなくても、問題なくリダイレクトされました。

というわけで、日本語URLをリダイレクトする必要が出てしまったWeb管理者のみなさん、くれぐれも.htaccessの文字コードには気をつけてくださいな。


※写真はフリー写真素材ぱくたそさんの素材を使わせていただきました。

この記事が気に入ったらサポートをしてみませんか?