テクニカルSEO BLOG
テクニカルSEOを中心にSEO対策をまとめています

301リダイレクトの設定と注意点

こんにちは、テクニカルSEO対策サービス「CLUSTER 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への流入は徐々に減ってきます。

永続的:
Googlebot はリダイレクトを追跡します。リダイレクトはインデックス登録パイプラインによって、リダイレクト先が正規版であることを示す強いシグナルとして使用されます。

https://developers.google.com/search/docs/advanced/crawling/301-redirects?hl=ja#overview-of-redirect-types

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リダイレクトを行います。

https://example.com/index.html

  ↓ 301 リダイレクト

https://example.com/

HTTPSサイトへのリダイレクト

HTTP版のURLにアクセスすると、HTTPS版のURLへリダイレクトされることがありますが、このときも301リダイレクトを設定します。

http://example.com/

  ↓ 301 リダイレクト

https://example.com/

ページを統合したとき

2つのページが統合されて1ページになったとき、統合先URLへの301リダイレクトを設定します。

https://example.com/aaa + https://example.com/bbb

       ↓301 リダイレクト

https://example.com/ccc

ドメイン変更があったとき

ドメインが変更されたときは、旧ドメインから新ドメインへ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 にリダイレクトする場合、.htaccesshttpd.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プラグインをインストールした後は、次のように初期設定します。

  1. [ツール]-[Redirection]メニューを選びます。
  2. [セットアップを開始]ボタンをクリックします。

  1. 「WordPressの投稿と固定ページのパーマリンクの変更を監視」をチェックします。
  2. 「すべてのリダイレクトと404エラーのログを保存する」をチェックします。
  3. [セットアップを続行]ボタンをクリックします。

これで初期設定が完了です。

リダイレクトルールを手動で設定する場合は、次のように設定します。

  1. [転送ルール]タブをクリックします。
  2. ソースURLに転送元のURLを入力します。
  3. ターゲットURLに転送先のURLを入力します。
  4. [転送ルールを追加]ボタンをクリックします。

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へリダイレクトが行われたかをトレースできます。

https://chrome.google.com/webstore/detail/redirect-path/aomidfkchockcldhbkggjokdkkebmdll/related?hl=ja

使い方は簡単で、ページ遷移でリダイレクトが行われると、Redirect Pathのアイコンが301のような表示に切り替わります。

アイコンをクリックすると、リダイレクトがどのような経路で行われたかの詳細が分かります。

Chrome拡張機能「Redirect Path」を利用したリダイレクトの動作確認

サーバーログを確認する

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リダイレクトを設定するときには、次の手順で行うことをお勧めします。

  1. 302リダイレクトを設定します。
  2. リダイレクトが正しいかどうか、十分な動作確認を行います。
  3. 302リダイレクトを301リダイレクトに変更します。
  4. 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リダイレクトで動作テストを行うようにしましょう。

Page Top