SEOサイトを運営しているときにドメインやURLを変更したいと思うケースもあります。その時に必須となるのが「リダイレクト」です。
また「リダイレクトの警告」を受けた・見たことがあるという人もいるのではないでしょうか。
ここではリダイレクトとはどんなものなのか、もし警告を受けた時の対処法などを詳しく紹介していきます。
リダイレクトとは
リダイレクトとは、WebサイトやページのURLを変更した際、古いURLにアクセスしたユーザーを自動的に新しいURLに転送することをいいます。
Webサイトをリニューアルした時やドメインの変更時、PCサイトとスマートフォン向けサイトで異なるURLを使用している時などに使用されます。
なぜリダイレクトが必要なのか
リダイレクトが必要とされる理由は2つあって1つは「ユーザビリティ」の面と2つ目は「SEO対策」です。
ユーザビリティでのケースは、サイトのリニューアルの時にサイトイメージにあったURLに変更したときにリダイレクトが行われない時の問題です。
もしサイトリニューアルをした後に、ユーザーがブックマークから自サイトにアクセスしようとしたときに「すでに存在しないURL」と表示されてしまうことが起きます。
その結果ユーザーはサイト内を回遊して同じコンテンツを探さなくてはならないだけでなく、二度と探してくれない可能性もあります。
そのため、せっかく定期的に訪れてくれるユーザーを獲得していても、URLが変更されてアクセスできなくなることでユーザーが離れてしまう原因にもつながります。
そしてSEOとしての問題は、URLを変更した際にリダイレクトが実施されていないと、Googleが新しいページを別ページとして扱ってしまうためページの評価が一度リセットされてしまいます。
例としてサイトリニューアルを行ったとに特定のキーワードで検索したときに表示されるページが順位を下落させてしまうということが珍しくありません。
以上2つの理由から、リダイレクトはユーザーやサイト運営者どちらにとっても重要であることが分かります。
リダイレクトの種類
リダイレクトを行うにあたって話題に上がるのが「301リダイレクト」「302リダイレクト」2種類のどちらを使うかの話でしょう。ユーザビリティ面では301と302、いずれのリダイレクトでも新しいページに遷移されるので問題ありませんが、SEO面で両者は異なった扱いになることに注意が必要です。使用例は以下の通りです。
- リニューアルなどでURL変更を行う場合(※URL変更そのものはあまり行わないほうが好ましいです)
- サイトのドメインを変更する場合
- wwwやhtmlありなしなど同一ページの統合(正規化)
- サイト全体をhttpからhttpsに変更する場合(SSL化の実施)
逆に「一時的にURL変更をするだけで将来的にURLを元に戻す」といった場合などに302リダイレクトを使用します。302リダイレクトを使用した場合には「将来は元のURLに戻す」と判断され、検索結果にも旧URLが表示されるようになります。
302リダイレクトの期間が長期に渡ると新URLが検索結果に表示され、評価が新URLに移るなどのケースもあります
- ページURLを一時的に変更し、一定の期間で元のURLに戻すような場合
- PCとスマートフォンのURLが異なっておりアクセスしたデバイス間でURLを変更する場合(PCのURLにスマートフォンでアクセスしたらスマートフォン向け別URLに移転、など※)
「リダイレクトの警告」と「不正なリダイレクト」とは
URLを開くと「リダイレクトの警告」という表示がされることがあります。これはGoogleドメインを介して違うページに遷移させようとする、スパムメールなどでよく使用される手法です。
例えば以下のようなスパムメッセージが届いたときで紹介しましょう。
「Googleからのプレゼントです!以下URLで詳細を確認ください。」
https://hogehoge.com/?=XXXXXX
URLを確認すると「https://hogehoge.com/?=XXXXX」という見慣れないURLがあるため、おそらく「これはスパムだな」と考え、クリックしない人が多いでしょう。では、以下のようなメッセージだったらどうでしょうか。
「Googleからのプレゼントです!以下URLで詳細を確認ください。」
https://www.google.com/url?q=https://bit.ly/3dICimF
最初のメッセージとは違って、ドメインはGoogleのものなので「Google公式のメッセージ」と考えクリックしてしまうかもしれません。
しかしこのURLはスパムメールに記載されていた「https://hogehoge.com/?=XXXXXX」に遷移されます。GoogleのURLでhttps://www.google.com/url?q=の「q=」にURLを追記するとリダイレクトが掛かる仕様になっているためです。
このようなスパムの悪用を防ぐためにGoogle側で「q=」にGoogle以外の別ドメインに遷移させる場合、一枚ページを挟んで警告を入れる設定になっています。実際に以下のURL(Googleのリダイレクトを使用してYahoo!JAPANに遷移する)をクリックしてみると「リダイレクトの警告」が表示されます。
この警告が表示された場合、遷移先がスパム、マルウェア感染やハッキングなどの危険性があるためリダイレクト先にはできるだけアクセスしないことを推奨します。(場合によってはGoogleの仕様変更などのタイミングで表示されるケースもあるようですが、遷移しない方が安全です)
もし自サイトで「不正なリダイレクト」の警告」を受けた場合
「リダイレクトの警告」とは別に「不正なリダイレクト」というものがあります。自分のWebサイト内でGoogleウェブマスター向けガイドライン違反となっているリダイレクトを使用している可能性があるための警告です。
Search Consoleのメッセージとして届きます。リダイレクトの例としては「検索エンジンにはリダイレクトをかけていないが、ユーザーにはリダイレクトをして違うコンテンツに誘導する(クローキング)」「スパムサイトにリダイレクトしている」などがあります。
この警告が来ることはめったにありませんが、警告が来た際にはメッセージの内容に沿って修正しましょう。
リダイレクトがブロックされました
これはChromeブラウザが不適切なリダイレクトが行われていることを検知した際に表示されるアラートで、目的としてはリダイレクトの警告と似たようなものです。
特にユーザーが何も操作していないのに、不正な広告などから意図しない転送をさせようとするケースで表示されることが多いようです。
このような不適切なリダイレクトに対しては、Chromeブラウザの「ポップアップとリダイレクト」で設定を変更することができ、デフォルトでは許可しない状態になっています。
基本的にはそのままの設定にしておき、許可したりリダイレクト先を開いたりしないようにしましょう。
信頼できるサイトなのに表示される場合には、限定的に許可してもよいかもしれませんが、問題ないかどうかよく確認するようにしましょう。
サイトを管理している方に、リダイレクトがブロックされたことを伝えてあげることで、管理者が修正してくれるかもしれません。
リダイレクトの繰り返し
特定のページを開こうとした際に「リダイレクトが繰り返し行われました。」が表示されることがあります。これはリダイレクトが次々と起こってしまい、最終的に表示するページが決まらない状態です。
基本的にはサイト側の設計ミスなどの場合がほとんどですが、ユーザー側のアクションで解決できることもあります。
リダイレクトのチェック方法
リダイレクトが起きているかを確認したい場合には、ステータスコードをチェックすることが一般的です。
リダイレクトが設定されているURLではステータスコードは301や302となり、200のページが表示されるまでリダイレクトが続きます。
しかし、ステータスコードでチェックできるのはHTTPリダイレクトだけで、meta refreshやJavaScriptによるリダイレクトはいずれもステータスコードは200となってしまうのでチェックすることはできません。
そのため、これらのリダイレクトを確認したい場合には別の方法が必要です。リダイレクトのチェックツールはいくつかありますが、おすすめのツールを紹介します。
おすすめのツール
このツールは以下のような特徴があります。
- 複数URLを一括でチェックできる
- リダイレクト以外のステータスコードをチェック可能
- Vary HTTPヘッダーのチェックが可能 ※UAに応じてリダイレクトする場合には併せて設定することが推奨されている
ページ移転時などに設置されたリダイレクトが正しく機能しているかどうかを確認することが可能です。
チェックできないリダイレクトがある場合
サーバーからステータスコード300番台が返ってくるリダイレクトはツールで問題なくチェックできます。しかし、リダイレクトと呼ばれる転送の中には、チェックツールでチェックできないものもあります。
その理由は、これから説明するリダイレクトはサーバーは200のステータスコードを返しており、ページを開いた後でブラウザがリダイレクトを行うためです。
サーバー側が行っているリダイレクトは.htaccessやphpによって設定され、ブラウザ側で行うリダイレクトはjavasciptやhtml(meta refresh)により設定されます。
次の章から、チェック方法と正しいリダイレクトの設定方法について解説していきます。
正しいリダイレクトの設定方法
リダイレクトを実装する方法はいくつかありますが、Googleはブラウザで実行するリダイレクトではなくサーバー側で実行するリダイレクト処理を推奨しています。Apacheを使用しているサーバーであれば、.htaccessというファイル内に301リダイレクトを行うよう記述することが一般的です。
ただし誤った設定を実施するとサイト全体の動作に影響する箇所なので注意しましょう。
.htaccessの書き方を解説しているページ
リダイレクトの実装後、Search Consoleでエラーなどが検出されないか「カバレッジレポート」や「検索パフォーマンスレポート」で集客状況に変化がないか定点観測します。
原則的にURLやドメイン変更は実施しないに越したことはありません。ただしサイトリニューアルなどでやむを得ずURL変更すると行ったような場合には、必ずリダイレクトの設定を忘れないようにしましょう。
設定する場合はまずテキスタエディタを使って、適当なファイル名でhtaccessファイルを作成します(たとえば sample.htaccess など)。
作成したhtaccessファイルを開き、URLの移行(リダイレクトの仕方)に合わせた記述を行い保存します。
リダイレクトの設定を実施せず、URLだけを変更し、リリースして集客を大きく落とすサイトが多いので注意しましょう。
1.ページ単位でのリダイレクト
sample1.htmlからsample2.htmlに転送させるケースでの記述
RewriteEngine on RewriteRule ^sample1.html$ http://www.tensou.com/sample2.html [L,R=301]
2.ディレクトリ単位でのリダイレクト
sample1ディレクトリからsample2ディレクトリに転送させるケースでの記述
RewriteEngine on RewriteRule ^sample1(.*)$ /sample2$1 [L,R=301]
ほかにもhttpからhttps へのリダイレクト、httpsからhttpへのリダイレクト、wwwありのURLからwwwなしのURLへのリダイレクトなど、転送の形に合わせて記述を変えていきます。
記述が終わって保存した .htaccessファイルをサーバーにアップすれば、リダイレクトは適用されます。
サーバーサイドリダイレクトとクライアントサイドリダイレクト
サーバーサイドリダイレクトはその名の通り、サーバー側からリダイレクトを指示されることです。
ユーザー(ブラウザ)があるページを見たいと思った場合、ブラウザがサーバーにそのページのリクエストを行うと、通常はサーバーからページを表示させるためのデータを受け取ります。
ところがリダイレクトが設定されていると、サーバーはページのデータを返すのではなく、「〇〇のページにリダイレクトされていますよ、だからそちらに行ってください」といった情報だけを返してきます。
その後ブラウザは指示された転送先に自動的にアクセスし、転送先のページデータを受け取ります。
このように、サーバー側が指示するリダイレクトをサーバーサイドリダイレクトと呼びます。
なお、サーバーサイドリダイレクトはHTTPステータスコードを伴うのでHTTPリダイレクトとも呼ばれます。ステータスコードは3ケタの数字で表され、リダイレクトの場合301や302など、300番台のステータスが返されます。
そのため、ステータスコードに応じて301リダイレクトや302リダイレクトなどと呼ばれることもあり、30xリダイレクトとまとめられることもあります。
単に「リダイレクト」と言った場合にはHTTPリダイレクトを指すというほど一般的な方法であり、基本的にはHTTPリダイレクトにてリダイレクトを行うことが推奨です。
一方で、クライアントサイドリダイレクトは、クライアント(ブラウザ)側で解釈されるリダイレクトです。
ブラウザがサーバーにリクエストした際に、サーバーからのリダイレクトの指示がなく、通常通りページ情報が返されますが、その受け取ったページ内に転送先が記載されているのが特徴です。
クライアントサイドリダイレクトも、多くは自動で実行されますが、ブラウザの対応状況や設定によってはサイト側が意図したようにリダイレクトされない場合もあります。
なお、クライアントサイドリダイレクトでは一度通常通りページが返されるため、ステータスコードは30xではなく、200(成功)となります。
ステータスコードとは?
テータスコードとは、HTTPステータスコード(HTTP Status Code)とも呼ばれる、HTMLを表示する前にブラウザが受信する3桁の番号です。番号は100-510までの間で割り振られていて、
各数値にはそれぞれ意味が付与されています。この3桁の数値を「HTMLを受信する前に」受信することで、ブラウザは正しい処理ができるようになります。
phpによるリダイレクト
phpによるリダイレクトは、htmlファイルの先頭にphpを記述することでリダイレクトする方法です。
こちらもサーバーサイドリダイレクトの1つです。
sample1.phpからsample2.phpに転送させるケースでの記述は以下の通りです。
<?php http_response_code( 301 ) ; header( "Location: ./sample2.php" ) ; exit ;
phpによるリダイレクトは、htaccessファイルの記述では条件分岐が複雑になってしまう場合におすすめです。ですがhtaccessファイルとは異なり、サイト内のリダイレクトを一元管理できなくなってしまうことに注意が必要です。
なお、WordPressを使用している場合には、プラグインなどでもリダイレクトを行うことが可能です。
meta refreshによるリダイレクト
meta refreshはhtmlのheadタグ部分に記載する指示により転送する方法です。そのためhtmlリダイレクトやmeta refreshリダイレクトとも呼ばれることもあります。
meta refreshはたとえば「当ホームページは移転しました。10秒後にジャンプします」という表示が出て、自動的に別のURLに転送される際などによく見られました。
現在はHTMLの基準を定めるW3Cではずっと前からmeta refreshは非推奨となっており、あまり見かけることはなくなりました。
しかしながらGoogleはHTTPリダイレクトを推奨しているものの、それができない場合の次善策として位置づけています。
10秒後にsample2.htmlに転送させる場合の記述方法
<meta http-equiv=”refresh” content=”10;URL=’sample2.html'” />
10の部分を5にすれば5秒後に、0にすれば即座にリダイレクトされます。SEOの効果を期待するならば、転送までの時間は0秒を指定しておくといいでしょう。
JavaScriptによるリダイレクト
使用しているサーバーで HTTPリダイレクトができない場合は、代替としてJavaScriptによるリダイレクトができます。JavaScriptによるリダイレクトもクライアントサイドで行われます。
sample2.htmlに転送させるケースでの記述は以下の通りです。
<script type=”text/javascript”> <!? setTimeout(“link()”, 0); function link(){ location.href=’https://(sample2.html)’; } ?> </script>
JavaScriptによるリダイレクトは、ブラウザ側でJavaScriptを無効にしているなど、実行に失敗した場合は転送されないので注意してください。条件によってはユーザーを逃してしまう可能性があり、なるべく避けたい方法といえます。
この方法は基本的に上級者向きといえるでしょう。Googleも一応JavaScriptによるリダイレクトはサポートしておりランキング評価を引く継ぐことは可能ですが、あまり推奨されていません。
SEOにおけるリダイレクトの使い分け
今までリダイレクトの方法を紹介しましたが、基本的にSEO対策を考えるならURLの変更はおすすめできません。できればURLを変えずに、そのまま使い続けるのがいいでしょう。
しかしサイトのイメージとURLがかけ離れてしまうことが懸念される場合にはリダイレクトも検討するのも一つのてです。ただしURLの変更が避けられずにリダイレクトを使う場合は、SEOにおいて以下の点に注意しましょう。
- なるべくサーバーサイドリダイレクト(HTTPリダイレクト)を使用する
- 永続的なリダイレクトと一時的なリダイレクトを使い分ける
なるべくHTTPリダイレクトを使用する
Googleはどのリダイレクトを使用しても評価を引き継ぎます。Google社員であるGary Illyes氏は、HTTPリダイレクトである30xリダイレクトを使用した場合、評価を失うことはないと発言しています。
30x redirects don't lose PageRank anymore.
— Gary 鯨理/경리 Illyes (so official, trust me) (@methode) July 26, 2016
逆にクライアントサイドリダイレクトを使用する場合は一部の評価が失われる可能性があります。
そのため、クライアントサイドリダイレクトは30xリダイレクトが使用できない場合のみ採用するようにします。
永続的なリダイレクトと一時的なリダイレクトを使い分ける
リダイレクトが行われている文脈をGoogleが正しく理解できるよう、永続的なリダイレクトと一時的なリダイレクトをシチュエーションに合わせて使い分けることをおすすめします。
永続的なリダイレクトとは、URLが完全に変更されてもう戻ってこないことを示すリダイレクトで、Googleでは以下のように説明されています。
リダイレクトはインデックス登録パイプラインによって、リダイレクト先が正規版であることを示す強いシグナルとして使用されます。
リダイレクトと Google 検索
一方で、一時的なリダイレクトは「リダイレクト先が正規版であることを示す弱いシグナルとして使用されます。」
つまり、URLが再びもとに戻ったり、条件つきで変更されている可能性を示したりする目的で使われるものです。
以下では、HTTPリダイレクトにおいて永続的もしくは一時的であることを示す301と302リダイレクトについて解説します。
301リダイレクト
HTTPリダイレクトのうち、恒久的(永続的)なリダイレクトという意味を持つリダイレクトです。
次のような場合に使用します。
- ページの移転が完了し、もうもとのページに戻ることがない場合
- サイトをまるごと移転した場合
- httpからhttpsに変更(SSL化)した場合
- index.htmlのありなし、wwwのありなしをどちらかに統一したいとき(正規化)
前述のように、リダイレクト先が正規のURLであることを強く示すシグナルですので、今後URLを一本化するという意図で使用します。
302リダイレクト
301が恒久的という意味合いを持つのに対し、302は一時的という意味合いを持ちます。
次のような場合に使用します。
- メンテナンスなどで、一時的に別URLでサイトを公開する場合
- デスクトップとモバイルで別々にページが存在しており、デバイスに応じて一方から他方へ転送したい場合
- 国やIPなどの条件によってユーザーを別のURLに振り分けている場合
302リダイレクトもリダイレクト先に評価を引き継ぎますが、リダイレクト先が正規のURLであることを示す弱いシグナルです。
一時的または条件によってURLを変えている場合に使用するようにしましょう。
HTTPリダイレクトが使用できない場合
「.htaccess」やphpなどによる301や302リダイレクトが使用できない場合はmeta refreshやJavaScriptによる転送を行います。推奨されている方法ではないとはいえ、何もしない場合と比べれば大きな違いがあります。
以下の優先度で検討しましょう。
- HTTPリダイレクト(.htaccessやphpなど)
- meta refresh
- Javascriptによるリダイレクト
なお、HTTPリダイレクトだけでなくmeta refreshやJavaScriptリダイレクトのクライアントサイドリダイレクトもできないという場合には、最後の手段としてcryptoリダイレクト(クリプトリダイレクト)という方法があります。
これはページを開いた時に、ページが移転したことを示す文言とともに、リンク先を表示させる方法です。
meta refreshでは自動的に転送されていましたが、代わりにリンク先を表示させてユーザーにクリックしてもらうイメージです。非常にアナログな手法ですが、Googleが公式的にリダイレクトとして認めている方法です。
以上のようにクライアントサイドリダイレクトをリダイレクトを使う場合にはいくつか留意点があります。
- meta refreshを永続的なリダイレクトとして使用する場合は0秒で転送を行う(前述の設定方法において、content=0にする)
- meta refreshにおいて0秒以外で転送を行うと、一時的な転送として扱われる
- JavaScriptによるリダイレクトやcryptoリダイレクトは永続的なリダイレクトとして扱われるため、一時的なリダイレクトの目的で使用することができない
とはいえ、一時的なリダイレクトが明らかに永続的なリダイレクトなリダイレクトとして使用されているケースではそのように扱うなど、Googleはある程度の裁量を持って判断していると考えられます。
いつまでリダイレクトしておくべき?
ドメイン移転を行った場合には移転後もリダイレクトを継続するためにドメインやサーバーを維持しておく必要がありますが、いつまで維持しておくべきなのでしょうか?
これについて、以下のようなGoogle社員の発言でも、少なくとも1年程度と発言しています。
これによるとユーザーのためには永久に維持しておくの理想なのですが、SEOの面からは最低1年維持しておけばよいとのことです。
その理由として、1年くらいたつと元のページ評価の移転が完了しており、元のページに評価が残っていない状態になるから、ということです。
まとめ
リダイレクトとはについて解説していきました。サイトの運営上どうしてもURLを変更したい場合にはリダイレクトという方法を使うこともできます。
しかしGoogleは基本的におすすめしていない方法でもあるので、行う際には方法とリスクなども事前に確認した上で行いましょう。