301リダイレクトとは、ブログやウェブサイトを引っ越し・移転する際、これまでに作成したコンテンツを新しいURLに引き継ぐために必要になる転送処理手続きのことを指します。
通常、301リダイレクトはApacheというhttpサーバで利用されているモジュールを .htaccessファイルに記述する必要があります。サーバー内データを編集したり、加工したりすることには相応のリスクがあるため、301リダイレクトの手続きに抵抗のある方も多くいらっしゃることでしょう。コードの記述方法や記述箇所を間違えればウェブサイトが閲覧不可能な状況に陥ることも大いに想定できます。
そこで本記事では、301リダイレクトの基礎知識や関連知識をご紹介した上で、301リダイレクトを行う必要がある状況ごとにその記述方法を解説します。
下記目次から状況ごとに301リダイレクトの記述方法を紹介した章に移動することができます。お急ぎの方はこちらをご利用下さい。
目次
301リダイレクトとは?
301リダイレクトはウェブサイトのURLが恒久的に変更される際に付与する転送処理のステータスコードのことを指します。URLに対して「301リダイレクト処理を付与する」ことで、過去のURLにアクセスしたユーザーを指定したURLへ自動転送することができます。
301リダイレクトはウェブサイトのURL変更や、ドメイン名の変更をした際に利用するステータスコードです。
一度検索エンジンに掲載された自サイトのURLや、他のサイトに掲載されたURLは自らの手で書き換えることができません。
古いURLが残っているままでは訪問したユーザーを正しいURLへ誘導することができないため、適切にリダイレクト処理を行う必要があるのです。
301リダイレクトはどんな時に必要?
次に、301リダイレクトを行う必要がある状況をご紹介します。
- ウェブサイトをSSL化したとき(httpからhttpsに変える)
- ウェブサイトの www. 部分のありなしを統一するとき(サブドメインの結合)
- ウェブサイトのドメインを変更したとき(ウェブサイト移転・引っ越し)
- ウェブサイトのURL構造を変更したとき(パーマリンク変更など)
- ウェブサイト内の、ウェブページのURLを変更したとき(記事スラッグの変更)
- 複数のウェブコンテンツを統合したとき(記事の結合)
以上5点の中でも、www.のありなし統一をする時やhttpからhttpsにするとき(SSL化するとき)などは使用頻度が高いです。特にウェブサイトのSSL化処理は新しいドメインを取得した際に必ず行うことなので、覚えておきましょう。
また、ウェブサイトにコンテンツを投稿していくごとに似たような検索意図の記事を投稿してしまうことは多々あります。ウェブサイト内のカニバリゼーションが起こった際にはよりアクセスされているURLに、そうでないURLのコンテンツを統合することでアクセス改善が可能です。
301リダイレクトと302リダイレクトの違い
301リダイレクトと関連したページ転送処理に、302リダイレクトというものがあります。
301リダイレクトと302リダイレクトの違いは、URL転送処理が恒久的なものであるか、一時的なものであるかどうかという点にあります。一時的なページ転送である302リダイレクトを必要とする場面は少ないですが、以下のようなケースには最適な手段です。
- 特定商品のセールやキャンペーンを行う場合に、キャンペーンページへの転送がしたい場合
- サービスのLPのABテストを行う場合
302リダイレクトを必要とするウェブサイトは非常に限られたケースになりますが、移行前のページを一定期間後に戻す必要がある場合に利用する(=一時的な転送)ものだと覚えておきましょう。
301リダイレクトとSEOの関係性|なぜ301リダイレクトは必要?
WEBサイト担当者なら、Google検索エンジンの301リダイレクトに対する扱いについて、注意深く・詳細に理解しておく必要があります。
正しい301リダイレクトを行うことで以前のウェブページのSEO評価を引き継ぐことができますが、その一方で少しでも設定方法を間違えればSEO評価が引き継がれないこともあるからです。
301リダイレクトとSEOの関連を理解するためには、Googleのインデックスの仕組みに注視する必要があります。
まず、Googleは以下のステップで記事のインデックスを行います。
- 記事をウェブサイトに公開する
- Googleクローラーがウェブサイトを訪れる
- 新規記事を発見し、内容を確認後、問題がなければインデックス
- 検索エンジンに表示されるようになる
サーチコンソールでURLのインデックス申請を行うことは、上記2番目の項目「Googleクローラーがウェブサイトを訪れる」ことを催促する意味があります。
ここで、Googleは一度インデックスしたコンテンツ(=記事)についてURL単位で管理していることを抑えてください。URLが少しでも変われば別の記事だとみなされ、それまでにGoogleがコンテンツに対して評価付けしていた数値がリセットされます。
- サイトをSSL化する(httpからhttpsに変更する)
- .www部分のありなしを統合する
- ウェブサイトのリンク構造を変更する(パーマネントリンク構造を変更する)
- 記事スラッグ部分を変更する
など、本記事の冒頭で紹介した操作を行った瞬間、Googleの評価がリセットされてしまうのです。
では、ウェブサイトのURL変更や、ドメイン変更がしたい場合、どうするべきでしょうか?ここで初めて301リダイレクトが登場します。
URL変更したいページに301リダイレクト処理を付与することで、Googleクローラーはステータスコードを理解し、転送先のURLと転送前のURLを紐づけします。その意味で、ウェブサイトコンテンツの評価を引き継ぐことができるのです。
Googleクローラーについては、下記の記事をご参照ください。
301リダイレクトをせずにサイト移転してしまうとどうなるか
301リダイレクトをURLに付与しないままウェブサイト移転や引っ越しをしてしまうと、これまでウェブサイトを運営してきた中でGoogleによって評価・蓄積されていた数値がリセットされてしまいます。
Googleは長期間にわたって複数の要因をもとにURLの評価付けを行います。そのデータが失われるということは、旧URLと新URLのコンテンツ内容が全く同一のものだとしても、これまで獲得できていたアクセス数を大きく下回る結果になってしまうのです。
サイト内でURLの変更は絶対にお勧めしないよ。
SEOに詳しくない制作会社さんやエンジニアさんがリニューアルなどの時にありがちです。大規模なリニューアルや改修の際は、正しいSEO知識持っている担当者を入れることをお勧めします。
先日も大変なサイトがありました。戻せるかなー pic.twitter.com/p3rvgEJJOU— Kazuhiro Nakamura @cocorograph (@kaznak_com) September 28, 2020
以上のツイートからは、2020年8月下旬にウェブサイトURLの変更を行い、それに対して301リダイレクトを行わなかったことで、アクセス数が大幅に減少してしまったことが伺えます。
すでに同じような状況に陥っているWEBサイトの担当者がいれば、後述する301リダイレクトの方法参考に、早い段階で旧URLから新URLへの転送を行いましょう。
301リダイレクトに失敗した場合の対応
301リダイレクトに失敗した場合は、ページ転送先が意図したページに設定されてなかったり、転送先が404コードのページになってしまったりします。
仮に301リダイレクトに失敗してしまったとしても、その操作に気付いた時点で正しいページ転送先に301リダイレクトを再設定すれば問題ありません。GoogleはURLの変更を即座に検知するわけではなく、Googleクローラーがウェブサイトを再び訪れるまでの猶予があります。
301リダイレクトが終わった後には必ず正しいページへ転送できているかを確認し、そのあとサーチコンソールにてリダイレクト通知を送りましょう(詳しい方法は後述します)。
301リダイレクトに設定する秒数と meta refresh について
最近は少なくなりましたが、ウェブサイト移転したページを訪れた際に「このサイトは引っ越ししました。5秒後に自動移動します。」といったような表記を目にしたことはありませんか?
これは挙動こそ301リダイレクトと同じ処理が行われますが、その内情は301リダイレクトとは異なり、「meta refresh」というhtmlコードを使って処理しているものです。
htmlコードのmeta refreshタグではページ転送が行われる秒数を指定することができます。古くは301リダイレクトの代替手段として活用されていましたが、Googleは301リダイレクトの代わりにmeta refreshタグを使うことに否定的です。
https://twitter.com/JohnMu/status/969470472906838016?s=20
(日本語訳)
Q:0秒に指定した “meta refresh” タグは301リダイレクトと同じ扱いを受けるのですか?A:”meta refresh” は301リダイレクトと同じ動作をしますが、私たち(Google)は2つの理由から推奨していません。
①UX(ユーザーエクスペリエンス)の理由:私の知る限りでは、ブラウザーの履歴に旧ページの閲覧データが残ります。
※筆者注:Googleはユーザーエクスペリエンスデータをウェブサイトの評価指標として採用しており、Johnが言うにはサイト滞在時間や離脱率などのポジティブなデータが旧ページに蓄積してしまうため、SEOの側面では meta refreshにメリットがないとしている。 参照:UIとUX
②ページが処理された後に転送を行うため、ページ転送に時間がかかる
https://twitter.com/JohnMu/status/969548555160621059?s=20
(日本語訳)
Q:Goolgleはリダイレクト処理までにかかる時間について、どのように考えていますか?
A:リダイレクト処理までにかかる時間に対するガイドラインはありませんが、meta refresh を利用してページ転送を行うのであれば、301リダイレクトと可能な限り同じ挙動をするように設定するべきです。(転送時間は可能な限り短い時間に設定することも推奨します。)これは Java Script を利用した転送でも同じことが言えます。
Googleの考えをまとめると、meta refresh を利用したページ転送を行うなら以下の項目に注意するべきです。
- 301リダイレクトが利用できる環境なら、間違いなく301リダイレクトでページ転送するべき
- meta refresh を使うのであれば、ページ転送までにかかる時間は限りなく少ない秒数に設定する
- Java Script を利用したページ転送についても同様のことが言える。
(はてなブログから他のブログサービスへ引っ越す際には Java Script を利用する方法が一般的。その場合、転送時間は可能な限り短い秒数に指定する。)
301リダイレクトをhtaccessで設定する方法や書き方をご紹介
それでは本記事の締めくくりとして、301リダイレクトのステータスコードを .htaccess に記述することでウェブサイトの恒久的なページ転送を行う方法をご紹介します。
今回紹介する301リダイレクトの設定方法は、ウェブサイトのページ転送が必要になる状況ごとに、以下の項目に分けて説明しています。
- ウェブサイトをSSL化する方法(httpからhttpsに変更する)
- www. のありなしを統一する方法(サブドメインとルートドメインの統合)
- ウェブサイトの移転・引っ越し時に新旧URLへページ転送する方法
- 特定ページや特定ディレクトリのみ301リダイレクトで転送する方法
- はてなブログをWordpressへ引っ越しするときの転送方法
301リダイレクトを設定する際のおおまかな流れは以下の通りです。
- ウェブサイトの .htaccess ファイルにステータスコードを記述する
- 301リダイレクトに成功しているかどうかを確認
- Googleサーチコンソールでアドレス変更通知を行う
- 旧URLを削除するか、下書きに戻す(バックアップ推奨)
301リダイレクトを使ってウェブサイトをSSL化する方法
301リダイレクトを利用してウェブサイトの全ページをSSL化(httpからhttps)に変更する場合は、FTPなどを利用して .htaccess ファイルに以下のコードを記述します。
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
なお、SSL化していない状態でのウェブサイト運営歴がある場合(http:// から始まるURLでウェブサイトを運営していた場合)、ウェブサイト内の内部リンクや画像保存先のURLが非SSL化の状態のままで残り続けるため、別途URLの変更手続きが必要です。
【URLの変更手続きが必要な個所】
- WEBサイトのデフォルトURL記述部分(Wordpressの場合)
- WEBサイトの内部リンク部分
- WEBサイトの画像保存先URL
以上の項目すべてを手動でURL変更することは非常に手間のかかる作業になるため、もしもWordpressをお使いの方であれば、Search Regex などのプラグインを利用してウェブサイト内の特定文字列を一括変更しましょう。
また、ウェブサイトをSSL化した場合はサーチコンソールへのアドレス変更通知を行う必要がありません。ただし、新しいアドレス(SSL化済みアドレス)のプロパティを新規登録した後、データを旧URLと紐づける必要があります。
サーチコンソールについては、下記の記事もご参照ください。
301リダイレクトで「www.」ありなしを統一、正規化する方法
ウェブサイトをリニューアルする場合や、中古ドメインを活用して www.(サブドメイン)部分のありなしを統一するときは、以下のコードを htaccessファイルに記述します。
www. ありにURLを統一する方法
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.jp$
RewriteRule (.*) https://www.example.jp/$1 [R=301,L] </IfModule>
www. なしにURLを統一する方法
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.jp$
RewriteRule (.*) https://example.jp/$1 [R=301,L] </IfModule>
※上記コード赤字部分のドメイン名はお使いのウェブサイトの形式に合わせてください。
また、www.部分(サブドメイン)のありなし統一する場合も既存コンテンツのURLを一括変更するべきです。すべてを手動でURL変更することは非常に手間のかかる作業になるため、もしもWordpressをお使いの方であれば、Search Regex などのプラグインを利用しましょう。
また、ウェブサイトのwww.(サブドメイン)ありなしを統一した場合はサーチコンソールへアドレス変更通知を行う必要があります。旧URLのプロパティにログインし、サーチコンソールのサイドバー下部にある [設定] タブから、[アドレス変更] タブをクリックしてください。
[設定] → [アドレス変更]
[新しいサイトを選択]
意図したアドレスにアクセスし、ウェブサイトが正常に表示されれば設定完了です。
ウェブサイトの移転時や引越し時に301リダイレクトを行う場合
ウェブサイトを別ドメインへ移転・引っ越しする際は以下のコードを htaccess ファイルに記述しましょう。
Redirect permanent / https://example.jp
※この時、新旧URLのパーマリンク構造が同一のものである必要があります。もしもサイト移転時にパーマリンク構造まで変更する場合は、個別ページごとに301リダイレクトを付与するか、URLの正規化を利用しましょう。(後述)
また、301リダイレクトステータスを付与したあとはサーチコンソールでアドレス変更通知を行いましょう。前章の「301リダイレクトで「www.」ありなしを統一、正規化する方法」に詳しい方法が書いてあります。
特定の複数ページやディレクトリのみを301リダイレクト設定したい場合
ウェブサイトコンテンツの一部を別のサイトに移転させる場合や、パーマリンク構造を変更する場合は以下のコードを htaccessファイルに記述します。
個別ページを301リダイレクトさせる場合
RewriteEngine On
RewriteRule (転送元となる相対パス) $ (転送先となる絶対パス) [R=301,L]
https://example.jp/old-dir/ から https://example.jp/new-dir/ のように、ディレクトリ単位でリダイレクトをかけたい場合は次のコードを記述しましょう。該当する旧URL以下のURL全てが新URLに置き換わります。
ディレクトリ名を変更する場合
RewriteEngine On
#ディレクトリ名の変更
RewriteRule ^old-dir/$ new-dir/ [R=301,L]
※ウェブサイトのディレクトリ文字列に置き換えてください。
ウェブサイトのパーマリンク構造を一括で変更したい場合は「Permalink Redirect」などのWordpressプラグインを利用しましょう。
301リダイレクトができない?失敗した時に確認したい項目
301リダイレクトコードを htaccessファイルに記述したのにもかかわらず、リダイレクトに失敗してしまった場合は次の理由が考えられます。
- リダイレクト先URLが間違っている
- コードをhtaccessファイルに記述する場所が間違っている
リダイレクト先URLが間違っている場合は意図していない新URLにページ転送されるか、404コードが表示されるページに転送されます。この場合はもう一度記述したコードに間違いがないか確認してください。
今まで301リダイレクトできていたのに、急に反映されなくなってしまった場合はhtaccessファイルの記述箇所を間違ってしまっていることが考えられます。Wordpressのテーマやプラグインによっては htaccessファイルを直接編集する機能を搭載しているものがあり、それらの機能が自動的にコードを上書きする領域にリダイレクトコードを記述してしまったことが原因です。
# BEGIN WordPress
# “BEGIN WordPress” から “END WordPress” までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。# END WordPress
もしウェブサイトのhtaccessファイル内に上記記述がある場合、 #BEGIN WordPressから #END WordPress の間に記述したすべてのコードは上書きされてしまいます。
したがって、なにか変更を加える際は #END WordPressよりも下に記述するようにしましょう。
301リダイレクトの解除方法
301リダイレクトを解除する場合は、htaccessファイルに記述したコードを丸々削除するだけでその設定を解除することができます。
しかし、301リダイレクトは恒久的なページ転送を意味するステータスコードです。もしも元のページに戻すことが考えられる一時的なページ転送を行う場合は、302リダイレクトを利用しましょう。
301リダイレクトはWEB担当者が必ず抑えておくべき基礎知識
本記事では301リダイレクトがなぜ必要なのか、SEO対策と絡めた基礎的な知識事項から具体的な施策方法までをご紹介しました。
ウェブサイトのリニューアルをしたり、ドメイン移転したりする際には301リダイレクトが必要なのか否かを必ず検討し、もしも必要であれば、リダイレクトやSEOに対する知識が豊富にある担当者を採用するべきです。
せっかく育て上げたウェブサイトの業績が地の底に落ちてしまうことが無いよう、Googleから獲得したウェブサイトの評価は新URLへ正当に引き継ぎましょう。