リダイレクトされない場合の対処方法


サイトをリダイレクトさせる方法は何通りかあり、アフィリエイターがよく利用する方法としては、下記いずれかだと思う。今回は、これらリダイレクトの方法を一つずつ説明するわけではない。主題の通り、下記の方法でリダイレクトを設定したが正常にリダイレクトされない場合の原因と対処方法を記載する。

下記の方法でリダイレクトさせようとしたが、うまく動作しないといった経験がある方は最後まで一読して欲しい。

(.htaccessが編集可能な場合)
・RewriteRuleを使う
・Redirectを使う

(.htaccessが編集できない場合)
・WordPressのRedirectionプラグインを使う
・meta refreshを使う

リダイレクトされない原因の一つとして、URLのパス部分に日本語が入っている場合である。例としては、下記の様なURLをリダイレクトさせたい場合だ。ちなみに問題があるのはパス部分に日本語が入っている時で、ドメイン部分は日本語ドメインであろうが問題はない。

問題が発生するURL例)
http://海外レンタルサーバー日本語ガイド.com/dreamhost登録方法/

※下記の様にパス部分がない、もしくはパスに日本語が含まれていないURLをリダイレクトさせる場合は問題ない。但し、リダイレクトさせる場合は、PunyCodeに変換は必要です。
http://海外レンタルサーバー日本語ガイド.com/
http://海外レンタルサーバー日本語ガイド.com/hogehoge/

 

どういった問題が発生するのか?

では、実際にどういった問題が発生してリダイレクトがされないのかを記載していきます。下記のURLを例として記述する。

(リダイレクト元)
http://海外レンタルサーバー日本語ガイド.com/dreamhost登録方法/

(リダイレクト先)
http://dreamhost-日本語.com/登録方法/sign-up/

上記URLをPucyCode表記へ変換すると下記の様な長ったらしいURLとなる。

puny

問題は、ここからだ。通常であれば上記の様にPucyCode表記に変換したURLで記述すれば大抵は問題がないのだが、ApacheはURLを内部処理する際に『%』を『\x』に置き換えている。これが問題を引き起こす原因となっている。「.htaccess」にリダイレクトを記載する場合、改行していて見難いかもしれないが次の様に記載する。図は拡大できるので見難ければ拡大してみて下さい。

redirect1

しかし、このままだとリダイレクトをしてくれない。これは次の書式を元に記載しているのですが、先述した通りApacheはブラウザから受っ取ったURLを内部処理する際に勝手に『%』を『\x』に置き換えている。その為、ブラウザから受け取ったURLと「.htaccess」の『リダイレクト元URL』に記述しているURLが不一致とみなされる。その結果、リダイレクト対象ではないと判断されリダイレクトされない。

RewriteRule ^リダイレクト元URL/(.*)$ リダイレクト先URL/$1 [R=301,L]

 

対応方法

どういった問題がどういった原因で起きるのか理解して頂けたでしょうか?原因が分かれば対応方法は簡単です。ブラウザから受け取ったURLと「.htaccess」の『リダイレクト元URL』に記述しているURLが一致する様に『リダイレクト元URL』を記載すればいいだけです。

『リダイレクト元URL』の『%』を『\x』に置き換えます。『リダイレクト先URL』は置き換える必要はありません。(図は見難いので拡大してみて下さいね)

redirect2

以上で、URLパス部分に日本語文字列が入っている場合の「.htaccess」にRewriteRuleを記載する方法は終了です。記事の内容が役に立ったと感じて頂ければ下記のソーシャルボタンを押して頂けると嬉しいです。参照ありがとうございました。

※今回動作確認を行ったのは、「.htaccess」にRewriteRuleを記載する場合だけです。その他のリダイレクト方法での検証は行っていないので動作しない可能性が高いので注意。

コメントを残す

*

このページの先頭へ