こんにちは、SEO分析ツール「アナトミー」開発チームの江頭です。
301リダイレクトは、ページのURLが変更したり、サイト移転の時に使う永続的なリダイレクトです。
この記事では、SEO効果を維持するための301リダイレクトの使い方や設定方法、301リダイレクト設定時の注意点を解説します。
301リダイレクトとは?
301リダイレクトは、リダイレクトのうちの一種で、HTTPステータスコードが301のリダイレクトを指します。
リダイレクトを行うHTTPステータスコードには、以下の5つがあります。
ステータスコード | 説明(英語) | 説明 |
---|---|---|
301 | Moved Permanently | 恒久的なURL変更によるリダイレクト。 |
302 | Found | 一時的なURL変更によるリダイレクト。 |
303 | See Other | リダイレクト前とは別の内容を表すページへのリダイレクト。 たとえば、入力フォームでPOST送信した後に、確認画面や完了画面にリダイレクトするときに使う。 |
307 | Temporary Redirect | 一時的なURL変更によるリダイレクト。 URL変更前と同じメソッド(GETやPOST)でアクセスする。 |
308 | Permanent Redirect | 恒久的なURL変更によるリダイレクト。 URL変更前と同じメソッド(GETやPOST)でアクセスする。 |
このうち、SEOで重要になるのが、301 Moved Permanentlyリダイレクトです。
なお、308 Permanent Redirectも、301リダイレクトとほぼ同じ役割を持ちます。 以後の説明では、301リダイレクトを紹介しますが、308リダイレクトでも同様の効果があります。
301リダイレクトと302リダイレクトとの違い
301リダイレクトはURL変更が一時的なものではなく、今後は新しいURLを使っていくときに利用するリダイレクトです。
一方、302リダイレクトはURL変更が一時的で、元に戻す(302リダイレクトを止める)可能性があるリダイレクトです。
元に戻す可能性があるかないかで、使い分けるとよいでしょう。
また、ブラウザは、301リダイレクトを受け取ると、古いURLから新しいURLへのリダイレクトをキャッシュに記憶します。ブラウザで古いURLを表示しようとすると、古いURLにアクセスすることなく、新しいURLが表示されます。
一方、ブラウザが302リダイレクトを受け取っても、リダイレクトをキャッシュに記憶することはありません。ブラウザで再度古いURLを表示しようとすると、ブラウザは古いURLにアクセスしたあとでリダイレクトします。
301リダイレクトのSEO効果
301リダイレクトは、ページが持つランキングシグナルを新しいURLへ引き継ぐ効果があります。たとえば、旧URLの被リンクの質は新しいURLへと引き継がれます。
また、検索結果に表示されるURLも、301リダイレクトの場合には、旧URLから新URLへと変更されます。そのため、301リダイレクトを設定した後は、検索エンジンから旧URLへの流入は徐々に減ってきます。
永続的:
https://developers.google.com/search/docs/advanced/crawling/301-redirects?hl=ja#overview-of-redirect-types
Googlebot はリダイレクトを追跡します。リダイレクトはインデックス登録パイプラインによって、リダイレクト先が正規版であることを示す強いシグナルとして使用されます。
SEOの基本・Googleの評価基準については定期開催のオンラインセミナーで解説しています。セミナーではGoogle公式のSEOガイドであるGoogle検索セントラルの「Google検索の仕組み」と「スターターガイド」の内容を分かり易く解説します。これからSEOを始めようと考えている方は是非ご参加ください。
301リダイレクトはいつ使う?
301リダイレクトは、基本的に旧URLから新URLへ変更があったときに設定しますが、それ以外の用途もあります。ここでは301リダイレクトの4種類の使い方を紹介します。
正規URLへのリダイレクト
ページを表示できるURLが複数存在するときは、正規URLへ301リダイレクトを行います。この301リダイレクトによって、ランキングシグナルを正規URLへ統合できます。
たとえば、Webサイトのトップページは、https://example.com/ や https://example.com/index.html など複数のURLでアクセスできることがあります。この場合、index.html を含まない正規URL https://example.com/ へ301リダイレクトを行います。
↓ 301 リダイレクト
HTTPSサイトへのリダイレクト
HTTP版のURLにアクセスすると、HTTPS版のURLへリダイレクトされることがありますが、このときも301リダイレクトを設定します。
↓ 301 リダイレクト
ページを統合したとき
2つのページが統合されて1ページになったとき、統合先URLへの301リダイレクトを設定します。
https://example.com/aaa + https://example.com/bbb
↓301 リダイレクト
ドメイン変更があったとき
ドメインが変更されたときは、旧ドメインから新ドメインへ301リダイレクトを設定します。TOPページだけではなく、旧ドメインのサイト全体をリダイレクト設定することに注意してください。
https://xxx.example.com/aaa↓301リダイレクト
https://yyy.example.com/aaaなお、ドメイン変更の場合は、サーチコンソールのアドレス変更ツールを使い、ドメイン移転の手続きも行います。
301リダイレクトの設定手順
301リダイレクトを設定するには、サーバーの設定を変更します。
Apacheで301リダイレクトを設定する
Apacheの場合は、Redirect
ディレクティブでリダイレクトを設定します。
例えば、https://example.com/aaa を https://example.com/ccc にリダイレクトする場合、.htaccess
やhttpd.conf
で次のように設定します。
Redirect 301 /aaa https://example.com/ccc
または
RedirectPermanent /aaa https://example.com/ccc
「a.com」から「b.com」のようにドメイン全体を301リダイレクトする場合は、次のように設定します。
Redirect 301 / https://b.com
または
RedirectPermanent / https://b.com
なお、Redirect
ディレクティブは、指定したパスから始まるURLがすべてリダイレクトの対象になります。特定のURLに完全に一致するパスのみをリダイレクトするには、RedirectMatch
ディレクティブを使います。
RedirectMatch 301 ^/aaa$ https://example.com/ccc
WordPressプラグインで301リダイレクトを設定する
WordPressの場合、Redirectionプラグインをインストールします。
Redirectionプラグインは、投稿記事や固定ページのスラッグ(URL)を変更すると、自動で新しいURLへリダイレクトしてくれる機能があるので、非常に便利です。
Redirectionプラグインをインストールした後は、次のように初期設定します。
- [ツール]-[Redirection]メニューを選びます。
- [セットアップを開始]ボタンをクリックします。
- 「WordPressの投稿と固定ページのパーマリンクの変更を監視」をチェックします。
- 「すべてのリダイレクトと404エラーのログを保存する」をチェックします。
- [セットアップを続行]ボタンをクリックします。
これで初期設定が完了です。
リダイレクトルールを手動で設定する場合は、次のように設定します。
- [転送ルール]タブをクリックします。
- ソースURLに転送元のURLを入力します。
- ターゲットURLに転送先のURLを入力します。
- [転送ルールを追加]ボタンをクリックします。
PHPで301リダイレクトを設定する
PHPで301リダイレクトを設定するには、http_response_code
関数でステータスコードを設定し、header
関数でLocationヘッダを出力します。
以下は、https://example.com/ccc にリダイレクトするサンプルコードです。
<?php
http_response_code(301);
header('Location: https://example.com/ccc');
?>
301リダイレクトの確認方法
リダイレクトを確認するには、ブラウザで旧URLにアクセスして、新しいURLへ転送されるかどうかで判断できるのですが、ステータスコードが301か302までは分かりません。そこで、次のような方法でリダイレクトのステータスコードを調査します。
Chrome拡張機能Redirect Pathを使う
Chromeの拡張機能Redirect Pathを使うと、どのURLからどのURLへリダイレクトが行われたかをトレースできます。
使い方は簡単で、ページ遷移でリダイレクトが行われると、Redirect Pathのアイコンが301のような表示に切り替わります。
アイコンをクリックすると、リダイレクトがどのような経路で行われたかの詳細が分かります。
サーバーログを確認する
Webサーバーのアクセスログにはステータスコードが記録されているので、ログを確認することで301リダイレクトかどうかが分かります。
Apacheの場合、アクセスログ /var/log/httpd/ssl_access_log
には6列目の項目にステータスコードが記録されています。
301リダイレクトが行われたときは、次のように301が記録されます。
192.168.1.1 - - [04/Aug/2021:20:53:08 +0900] "GET /blog/about-technical-seo.html HTTP/1.1" 301 255 "-" "Mozilla/5.0 ..."
301リダイレクトの注意点
事前に302リダイレクトで動作確認する
301リダイレクトはブラウザがキャッシュしたり、クローラーが正規URLを変更したりするのに利用される強い設定です。そのため、誤った301リダイレクトを設定してしまうと、その後の修正が面倒になったり、場合によっては復旧することも難しくなります。
そのため、301リダイレクトを設定するときには、次の手順で行うことをお勧めします。
- 302リダイレクトを設定します。
- リダイレクトが正しいかどうか、十分な動作確認を行います。
- 302リダイレクトを301リダイレクトに変更します。
- 301リダイレクトに変更されたかどうかを確認します。
元に戻す可能性があるときは301リダイレクトをしない
301リダイレクトは恒久的なリダイレクトです。そのため、元に戻す可能性が少しでもあるときは、302リダイレクトを使うようにしてください。
301リダイレクトを設定できないときは
利用しているシステムによっては、ステータスコードを変更できなかったり、Location
ヘッダを設定できない場合があるかもしれません。301リダイレクトが設定できないときは、meta refreshタグを利用するか、JavaScriptでリダイレクトする代替策があります。
meta refreshタグを記述する
meta
タグで、新しいURLへのリダイレクトを設定します。
<meta http-equiv="refresh" content="0; url=https://example.com/ccc" />
content
属性の最初の数字(遅延秒数)は必ず0を指定してください。
1以上の時は、302リダイレクトと解釈されます。
JavaScriptでリダイレクトする
JavaScriptで、新しいURLへのリダイレクトを設定します。
<script>
window.location = 'https://example.com/ccc';
</script>
ただし、この方法は推奨されておらず、HTTPヘッダもmeta refreshタグもどちらも利用できないときの最終手段としてください。
301リダイレクトは注意して使う
以上、301リダイレクトの設定方法と注意事項を紹介しました。
これまで説明してきたように、誤った301リダイレクトはSEOに悪影響を及ぼしてしまいます。
いきなり301リダイレクトを設定するのではなく、事前に302リダイレクトで動作テストを行うようにしましょう。
シンメトリックが定期開催している無料SEOセミナーでは、Google検索の仕組みやSEOの基本についてわかりやすく解説しています。
セミナーではGoogle公式のSEOガイドであるGoogle検索セントラルの「Google検索の仕組み」と「スターターガイド」の内容を読み解くことで正しいSEO基礎知識のスタート地点を受講者に提供することを目指しています。
「SEOの何から学べばいいか分からない」「SEOに関する情報は何が正しいのか分からない」このようなお悩みをお持ちの方は是非ご参加ください!