Webサイト内のページURLの変更や削除、またはディレクトリごとの移動やサイト全体の移転などを行う場合、リダイレクト(転送)という処理で新たなページに遷移させることがありますが、正しい知識と手順で行わないと、検索順位が下がってしまったり、SEO的に不利になってしまったりすることがあります。そこで正しいリダイレクト方法を覚えておきたいと思います。
リダイレクトの種類
リダイレクトには、大きく以下の4つの方法があります。
-
- ページに直接リンクURLを明記する
- HTMLやJavaScriptのクライアントサイドプログラム
- PHPやPerlといったサーバーサイドプログラム
- .htsccess設定
1.URL変更をお知らせし新しいリンク先を明示する場合
こちらのサイトは引越しをしました。
新しいURLは「http://new-sample.com/」になります。
というように直接html上に表記してしまうのが一番簡単な方法かもしれませんが、厳密にはリダレクトとは言えませんね・・・。
2.metaタグでn秒後に新しいURLにリダイレクトする場合
head要素内のmetaタグによりリダイレクトを行う方法になります。
「http-equiv=”refresh“」を追加することで、別のURLへのリダイレクトを指定することができます。
▼例えば5秒後に「http://new-sample.com/」にリダイレクトさせる場合は下記のように記述。
1 |
<meta http-equiv="refresh" content="5; URL=http://new-sample.com/"> |
リダイレクト先のURLの指定は、絶対パス・相対パスのどちらも指定可能です。以上の方法は、同じドメイン内での転送設定である場合、手軽に行える設定なので単純なリダイレクト設定を行いたい場合には良いかもしれません。ただし、Webサイト全体の移転などで行うと、検索エンジンで「以前のドメインが持っていた情報が引き継がれない」可能性があります。その一例として、Yahoo!では、metaタグによる0秒指定のリダイレクトが、301リダイレクトとして扱われてしまい、以前のドメインが持っていた情報は引き継がれるが、Googleでは.htaccessやPHPなどによる301リダイレクトを推奨しています。metaタグによるリダイレクトでは、スパム判定を受ける可能性があることから、以前のドメインの情報が正しく引き継がれない可能性があります。
【※参考にさせていただいたサイト】
Google ~品質に関するガイドライン(不正なリダイレクト)~
以前のドメインの情報が引き継がれないことによるデメリット
では、ドメインの情報が引き継がれないことよってどんなデメリットがあるのかというと、検索エンジンからすると、以前のURLと新たなURLが全く別のサイトのものという認識なってしまうので、それまでに検索順位をアップさせていたポイントがリセットされてしまうということになります。何故かと言うと、検索エンジンは以下の情報を参考に検索順位を決定しているからです。
- どの程度価値のあるコンテンツを提供しているのか?
- 他のサイトからどれくらいの被リンクがあるのか?
- どのくらいの期間運営されているサイトなのか?
こういったことにより、metaタグによるリダイレクト設定は、可能な限りサイト内での転送利用にしておいた方が無難でしょう。サイト自体の移転を行う際には、「301リダイレクト」をするようにします。
301リダイレクトとは?
HTTPヘッダのステータスコードにより、リダイレクトの種類を伝え、その上でリダイレクトを行う方法の一つで「301」のステータスコードはMoved Permanently(恒久的な移動)を意味し、完全にサイトが移動したことを表します。
301リダイレクトのメリット
Webサイトが移転したという情報が正しく検索エンジンに伝わるため、移転前のサイト情報が移転後のサイトにきちんと受け継がれます。
3.PHPによるリダイレクトをする場合
PHPを利用できる環境であれば.htaccessのようにサーバーサイドプログラムの種類を問わないため、.htaccessが制限されているレンタルサーバ等ではPHPを利用すると良いかもしれません。ただし、デメリットとしてリダイレクトを指定する全てのファイルに直接リダイレクト処理を記述する必要があります。
1 2 3 4 |
<?php header('Location: http://www.sample.com/', true, 301); exit(); ?> |
4..htaccessで301リダイレクトをする場合
【サイト全体】サイト内のすべてのページを、指定したURLへリダイレクトさせる場合
1 2 3 4 5 |
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{http_host} 現在のURL RewriteRule (.*)$ 移転後のURL$1 [R=301,L] </IfModule> |
▼例)http://www.sample1.com/からhttp://www.sample2.com/にリダイレクトさせる場合
1 2 3 4 5 |
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{http_host} www.sample1.com RewriteRule (.*)$ http://www.sample2.com/$1 [R=301,L] </IfModule> |
【特定ページのみ】を、指定したURLへリダイレクトさせる場合
1 2 3 4 |
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule 対象ページのURL$ 移転後のURL [R=301,L] </IfModule> |
▼例).htaccessと同一フォルダにある、sample3.htmlをhttp://www.sample4.com/にリダイレクトさせる場合
1 2 3 4 |
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule sample3\.html$ http://www.sample4.com/ [R=301,L] </IfModule> |
リダイレクト設定と言っても色々な設定方法がありますので、その時の条件によって指定方法を考えていくことが必要ですね。