インターネット上のすべてのページには、Uniform Resourse Locator:URLという名の住所がついています。でも時には、事情によりコンテンツを別の場所に引っ越しをしなければならないことがありますよね。こんな時にリダイレクトの設定が必要になります。リダイレクトとは何か?というと…
目次
リダイレクトとは何か?
リダイレクト(英語でredirect)とは、あなたのWebサイト内にあるページにユーザーがアクセスしてきた時に、自動的にそのページのURLから別のページのURLに転送させることです。同じWebサイト内のページだけでなく、他のWebサイト内のページに転送することもあります。
例えば、あなたが事情によりWebサイトのドメイン名を変更するとします。今後Webサイトは新ドメイン名で運営していくので、昔のドメイン名はもう使用しません。でも、前からあなたのサイトに来てくれているお客さんは、前触れもなく新しいドメイン名に引っ越しをされたら困りますよね。
そんな時、古いURLにリダイレクトの設定をしておくと、お客さんが昔のWebサイトにアクセスしようとした時に、自動的に新しいWebサイトに案内してくれるのです。
リダイレクトの種類と意味
リダイレクトで使うHTTPステータスコードには、以下のようなものがあります。
301 永久的なリダイレクト
301は最もよく使われるリダイレクトで、最初の例のようにWebサイトの引っ越しをした場合には、このリダイレクトを設定します。すると、お客さんを古いURLから新しいURLへ自動的に転送すると同時に、GoogleやYahoo!など検索エンジンのロボットにも旧URLが今後使われないことを伝えます。
301リダイレクトは、通常サーバー側の.htaccessファイルで設定します。でもWordPressなら、header.phpファイルの<head>〜</head>の中に以下の記述を挿入すれば設定できます(実際のやり方はPHPを使ったリダイレクトのところで解説しています)。
wp_redirect(“指定のURL”,301)
もし301リダイレクトを設定しなかったらどうなるでしょう?お客さんが直接URLを入力しても、目的のWebサイトにたどり着くことはできません。また、Googleも旧URLにWebサイトが存在すると思い、そのURLを検索結果に表示します。でも、そこにはもはやWebサイトは存在しないので、Googleもコンテンツを見つけることができません。
こんな時、お客さんが直接入力またがGoogle経由でそのページにアクセスを試みると、「ページが見つかりません」という404エラーが表示されることになります。
301リダイレクトは永久的なリダイレクトを表すので、何らかの事情で一時的に別のURLを使うものの、いずれ元に戻す予定の場合には不適切です。このような場合は、次の302(307) 一時的なリダイレクトを使います。
また、301リダイレクトを設定した場合、それまで築いてきた旧URLに対する評価はそのまま新URLに引き継がれます。SEO対策の側面からは、301リダイレクトを設定したら、新URLに対して追加で対策を施す必要はありません。
302(307) 一時的なリダイレクト
301のリダイレクトに対して、302リダイレクトと307リダイレクトは一時的に別のURLで同じコンテンツを表示させたい場合に使います。この場合、301と違って元のURLにもページのデータが残りますし、Googleの評価も元のページに残ります。
302も307も、実際はほとんど同じ意味を持ちます。両者を使い分けなければいけない状況は、ほぼないでしょう。どちらかというと、302は曖昧な表現なのに対して、307は一時的な移転であることをはっきり伝えています。なので最近では307の方が好んで用いられるようです。
リダイレクトの設定方法とコード記載例
301または302リダイレクトの設定方法には、いくつかの設定方法があります。これからご紹介するやり方のうち、使いやすいものを1つ選んで設定してみてください。
.htaccessを使った301リダイレクト
通常301リダイレクトは.htaccessを使って設定します。.htaccessとはサーバーの設定を上書きすることができるファイルのことで、今回ご紹介する301リダイレクトの他にも、アクセス制限やbasic認証など、様々な設定を行うことができます。.htaccessの様々な機能についてはリンク先で詳細しているので、そちらをご参照ください。今回はこの.htaccessを使った301リダイレクトの設定方法をご紹介します。
.htaccessを使って301リダイレクトで常時SSL化(httpサイトをhttpsサイトへ)する方法
近年ネット上のセキュリティーが厳しくなってきていて、ユーザーがhttpサイトを開くと警告メッセージが表示されるようになっています。加えて、webサイトのhttps化(常時SSL化といいます)は弱いながらもGoogleのランキングファクターであることが知られています。もしあなたのwebサイトがまだhttpで運用されているなら、この機会にhttpsサイトへ常時SSL化してしまいましょう。
Webサイトの常時SSL化のためには、まずSSL証明書を取得する必要があります。今はもうほとんどのレンタルサーバーで無料SSL証明書を発行しているはずなので、.htaccessファイルの設定前に取得しておいてください。
証明書の取得が済んだら、FTPソフトを使ってwebサイトの.htaccessファイルを開き、下のコードをコピペすれば完了です。
RewriteEngine on
RewriteCond %{ HTTPS} off
RewriteRule ^(.*)$ https://%{ HTTP_HOST}%{REQUEST_URI} [L,R=301]
.htaccessファイルは、WordPressサイトでは通常ルートディレクトリ内に不可視ファイルとして存在します。ファイルがなければテキストファイルにコードを記載して、FTPソフトでサーバー上にアップロードしましょう。
.htaccessを使ってドメイン単位でリダイレクトする方法
Webサイトごと全く別のドメインへリダイレクトさせたい場合は、.htaccessファイルに次のコードを添付します。
RewriteEngine on
RewriteCond %{http_host} ^古いURL(httpsから入力)
RewriteRule ^(.*) 新URL(httpsから入力)$1 [R=301,L]
.htaccessを使ってディレクトリ単位で301リダイレクトする方法
一方、サイト全体ではなく一部のディレクトリだけ301リダイレクトを設定したい場合は、.htaccessファイルに以下のコードを添付します。
RewriteEngine on
RewriteRule ^古いディレクトリ(.*)$ /新しいディレクトリ$1 [L,R=301]
作成したファイルを、FTPソフトでリダイレクトしたいディレクトリにアップロードします。.htaccessファイルの有効範囲は、ファイルを設置したディレクトリから下にある全てのファイルです。複数の.htaccessファイルが設置されている場合は、下層にある.htaccessが優先されます。
PHPを使ったリダイレクト
上記301、302、307リダイレクトを、PHPというプログラミング言語を使って設定する方法です。プログラミング言語と聞いて拒否反応が出てしまったあなた、心配無用です。実質コピペで作業完了です。
WordPressの管理画面から外観 >> テーマの編集をクリックします。するとスタイルシート(style.css)の画面になるのですが、その右側にテーマファイルという項目があって、その中にテーマヘッダー(header.php)というファイルを開きます。
このプログラムの最初の方に、<head>〜</head>で挟まれた領域があるはずです。ここに以下のheader関数を挿入してください。
<?php header(‘Location: 転送先のURL’, true, 301); exit(); ?>
2行目の「true, 301」を省略すると302リダイレクトに、最後の数字を307に書き換えると307リダイレクトになります。
meta refreshタグを使ったリダイレクト
あなたは今まで「◯秒後に別のページに転送します」と表示されるページを見たことはありませんか?そのままの状態で数秒経過したら自動的に別のページの読み込みが始まるやつです。このようなリダイレクトはmeta refreshタグによるリダイレクトと呼ばれ、WordPressの中で設定できます。
PHPの場合と同じように、対象のWebサイトでheader.phpのファイルを開いて、<head>〜</head>の中に以下の記述を挿入すると設定できます。
例:5秒後に指定のURLへ転送を行う場合
<meta http-equivalent=“refresh” content=“5;URL=‘転送先のURL‘“/>
転送が実行されるまでの秒数を変えたい場合は数字を変更し、赤字のところに転送先のURLを入力します。
Javascriptを使ったリダイレクト
何らかの理由でHTTPを使ったリダイレクトを設定できない場合、Javascriptという言語を使ってリダイレクトを設定することもできます。HTTPによるリダイレクトがサーバー側で処理されるのに対して、Javascriptによるリダイレクトはブラウザ側で処理されるという違いがあります。
PHPやmeta refreshタグによるリダイレクトと同様に、headファイルの<head>〜</head>の中に以下の記述を挿入します。
<script type=“text/JavaScript”> <!- setTimeout(“link()”,0); function link(){ location.href=’転送先のURL’; } -> </script>
この時、setTimeoutの行の数字を変えることにより、転送までの時間を設定できます。
欠点としては、Javascriptをサポートしていないブラウザを使っている場合(今はほとんどありませんが)、あるいはJavascriptの使用を許可しない設定をしている場合には、適切に転送されません。
プラグインを使ったリダイレクト
もしあなたが「コードの書き換えなんてできない!」と言うのであれば…WordPressではプラグインを使って設定する方法もあるので、適宜インターネットで検索してみてください。
有名なところではRedirectionというプラグインがあります。実際使ったことはありませんが、301、302、307のいずれのリダイレクトもこれ1つで設定できるようです。
リダイレクトの警告とは?
リダイレクトの警告とは、ユーザーがPCやスマホなどでGoogleを利用中に、不適切なリダイレクトをGoogleが検知した時に表示されるメッセージのことです。Google Chromeだけでなく、gmailやGoolgeカレンダー、Googleドキュメント、Googleマップなどに貼られたリンクでも、リダイレクトの警告が表示されることがあります。
リダイレクトはwebサイト管理者にとって非常に重要なテクニックですが、悪意のある人が使うとユーザーを騙してアダルトサイトや詐欺商品のページにリダイレクトを向けることもできてしまいます。
このような危険性からユーザーを守るために、Googleは不適切なリダイレクトを検出したときに警告メッセージを発してくれます。
リダイレクトの警告が出た場合の原因と対処法
ただ、この「リダイレクトの警告」は本来問題のないwebサイト閲覧中にも出ることがあります。
原因として考えられるのは…
1.非SSL化サイトへのリダイレクト(httpsからhttpへ)
リダイレクトの設定を間違えて、httpsからhttpへ逆にリダイレクトをしてしまった場合です。近年Googleはセキュリティー重視を強めていて、非SSLサイト閲覧時に警告を発するようになっています。あなたのサイトでリダイレクトが正しく設定されているか、もう一度チェックしてみてください。
2.内容の異なるページへのリダイレクト
リダイレクト前後のページでコンテンツの内容が大きく異なる場合も、「リダイレクトの警告」の対象になり得ます。これを意図的にやるのはブラックハットSEOの手法の1つですが、やってもリダイレクト先にリンクジュースは流れませんし、Googleに目をつけられるだけ無駄なので止めましょう。
3.Webブラウザに保存されたcookie
まれに、webサイト自体には問題がなくても、ユーザーが使っているwebブラウザのcookieが原因で「リダイレクトの警告」が出ることがあります。この場合はあなたの側にできることはありませんが、ユーザーから連絡が来た場合には…
- ブラウザを再起動する
- ブラウザをシークレットモードで起動する
- ブラウザに保存されたcookieを削除する
といった対処法を教えてあげてください。
「リダイレクトが繰り返し行われました。」のエラーメッセージが出たときの原因と対処法
リダイレクトの警告と同様に、リダイレクトの設定を誤った時に出てくるエラーメッセージで「リダイレクトが繰り返し行われました。」というものがあります。これはリダイレクトループと呼ばれるものが原因で、リダイレクトの設定が不適切で無限のリダイレクトループが起こってしまった時(あるいはリダイレクト数が多すぎる時)に発せられます。
このエラーメッセージもwebブラウザのcookieが原因で発せられることもあります。もし閲覧者側にブラウザの再起動やcookieの削除を依頼して、それでも解除されない場合は、サイト内のリダイレクトループが原因として考えられます。Abashiのリダイレクトチェッカーなど無料のリダイレクトチェックツールを使って原因を突き止め、そのリダイレクトを設定している.htaccessなどのファイルを修正しましょう。
大堀 僚介(Ohori Ryosuke)
AWAI認定コピーライター
SEO contents institute認定コピーライター
何事も“超一流の専門家から学ぶ”をポリシーとしており、コピーライティング業界で世界最高の権威である全米コピーライター協会(AWAI)でライティングの基礎を習得後、SEOコピーライティングのパイオニアHeather-Lloyd Martin、コンテンツマーケティングの世界的第一人者Brian ClarkにWebコピーライティングを学ぶ。
さらにAWAIでビジネス用Webサイト作成スキルを習得、知識ゼロの状態から自社サイトSuper Clear Contentsを立ち上げる。その経験とインターネット業界の動向をふまえて、個人事業主や副業サラリーマンに向けて最新のビジネス用Webサイト構築方法を提供している。