ウェブサイト内のページの移動や削除、またはサイト自体の移転してすぐの期間は、検索エンジンを利用すると旧サイトが検索結果に表示されます。旧サイトURLから新サイトURLに自動的に移動させることをリダイレクトさせるといいます。一口にリダイレクトといっても正しい知識と手順を以って対応しなければ、検索順位の下降、ページランクやドメインエイジの喪失といったSEO的なペナルティを招いてしまう可能性があります。しっかりと正しい認識を持って対応をするようにしていきましょう。リダイレクトを設定する時はHTTPヘッダのステータスコードに、リダイレクトの種類を伝え、その上でリダイレクトを行います。この記事ではリダイレクトの設置方法とリダイレクトの種類を紹介していきます。

リダイレクトを設定する方法について

この記事では3つ紹介します。他にも方法は存在しますがWordPressで使う可能性があるのは以下3つとプラグインを使う方法くらいに落ち着くと思います。それぞれの注意点として、この設定を導入するためにはWebサーバ側での設定(具体的には、Apacheサーバのmod_rewriteモジュールの設定)や、PHPを利用できる環境を整えるなど、いくつかの事前確認が必要です。最近では全ての方法を使うことができる環境であることが多いとは思いますが、古いWebサーバーなど、使えない場合があるため、留意しておくことが必要です。

metaタグによるリダイレクト

htmlのhead要素内に記述されたmetaタグによりリダイレクトを行う方法です。

設置場所 各ページに記述
メリット htmlに記述するだけで手軽、何秒後にリダイレクトするか指定可能
デメリット 基本的に301リダイレクトと判断されるがGoogle非推奨

  • <meta http-equiv="refresh" content="(秒数);URL=(移転後のURL)">

この方法は、HTMLのみで設定することが可能で、何秒後に転送するなど指定ができるのでユーザーに転送理由などテキストを表示することが可能になるというメリットがあります。いきなり別のページに移動させるよりも「当ページでご紹介していたキャンペーンは終了いたしました。5秒後に最新のキャンペーンページへ自動的に転送いたします。」など表示させた方がユーザーにも安心感を与えられるでしょう。サイト内で転送設定を行う場合であれば、特別な準備も特に必要ないため、手軽に使うことができるという点もメリットの1つです。

注意
サイト移転(ドメインの変更など)の場合にこの方法を使うと、一部の検索エンジンで「前のドメインが持っていた情報が、新しいドメインに引き継がれない」という可能性があります。Googleでは後から紹介する.htaccessやPHPなどによる301リダイレクトを推奨していること、metaタグでのリダイレクトではスパム判定を受けることがあることから、前のドメインの情報が正しく引き継がれない可能性があります。検索エンジンに対する評価を気にするコンテンツの場合は避けた方が無難でしょう。
Google Search Console ヘルプ 1 ヘルプ 2

.htaccessファイルによるリダイレクト

.htaccessでのリダイレクトは1つのファイルで多数のファイルやフォルダを制御できるというメリットがあります。

設置場所 各階層に.htaccessファイルを設置する
メリット 設置階層以下に一気に適応可能。検索エンジンにリダイレクト種を伝えることが可能。
デメリット 使えない環境もある。ビギナーには少し敷居が高い。

たくさんのページをリダイレクト設定を必要とする場合など、手間が少なくて済みます。しかし、利用するためにはWebサーバーがApacheで構成であり、mod_rewriteモジュールがサポートされている必要があります。ほとんどのレンタルサーバーでフォローしていると思いますが、使えなった場合はこちらのケースが該当すると思ってください。

.htaccess とは
Webサーバーをディレクトリ単位で制御するためのファイルで、 リダイレクトやBASIC認証、404エラーページの作成を行うことができます。Apache (アパッチ) が使用されている環境で、使用が可能ですので、お使いのサーバーで使用可能かどうかは、 .htaccessの使用を許可しているかをサーバーのマニュアル、もしくはサーバーの管理者に確認しましょう。.htaccess はテキストファイルです。テキストエディタにて編集可能です。 .htaccessを設置したディレクトリではサブディレクトリを含むすべてのファイルに効果があります。
※サブディレクトリにも.htaccessを設置することは可能で、上層のディレクトリに.htaccessが設置されている場合はサブディレクトリの指示が優先されます。

mod_rewriteモジュールがサポートされていない場合は、以下を.htaccessに記載することで、リダイレクト処理を設定することができます。

例)https://(リダイレクト先ドメイン)/ に301リダイレクトを設定する。

  • <IfModule mod_rewrite.c>
  • RedirectMatch 301 .* (移転後のURL)
  • </IfModule>

ただし、こちらの方式ではクエリ、URL以下に付与される文字列までは対応できないため、例えば
https://(対象のドメイン)/?status=query
というURLからリダイレクトしようとすると、クエリもそのまま引き継ぐことができず以下のようなリダイレクト先になることがあります。
https://(移転先ドメイン)/

WordPressでは以下のようなURLである場合も多くのケースであると思います。注意するようにしましょう。
https://(ドメイン)/?p=1

PHPによるリダイレクト

htmlのhead要素内に記述されたmetaタグによりリダイレクトを行う方法です。以下をPHPファイルの文頭に記述することでリダイレクト処理が設定可能です。

設置場所 各ページに記述する
メリット ウェブサーバー環境を問わない。WordPressの場合プラグインで管理可能。検索エンジンにリダイレクト種を伝えることが可能。
デメリット 元ファイルがphpで記述されている必要がある。ページが大量にある場合は不向き。

PHPを利用できる環境であれば使用することができます。前出の.htaccessの利用が制限されているレンタルサーバー等ではこちらを利用することになるでしょう。ただし、以下の処理を対象のページファイルに直接記述する必要があるため、リダイレクトさせたいすべてのページファイルに同じように移転先を記述をする必要がでてきます。

例)(移転後のURL)に301リダイレクトを設定する。

  • <?php </li>
  • header('Location: (移転後のURL)', true, 301);
  • exit();
  • ?>

リダイレクトの種類について

以下に各リダイレクト番号の解説と.htaccessで指定する場合のコードを併記してご紹介します。

301リダイレクトとは?

「301」のステータスコードはMoved Permanently(恒久的な移動)を意味し、完全にサイトやページが移動した、ということを表します。

301リダイレクトを利用するメリットとして、前述のmetaタグによるリダイレクトと異なり、「サイトが移転した」という情報が正しく検索エンジンに伝わるため、移転前のサイトの情報が移転後のサイトに受け継がれる、という点です。つまり、新規サイトやミラーサイトではない、引っ越しをした移転サイトであるということを示すことで、それまで積み重ねた検索エンジンからの評価を引き継いだサイトの移転を行うことができます。基本的にサイトの引っ越しといえばこの301リダイレクトを設定することになります。

.htaccessでサイト全体を301リダイレクト

  • <IfModule mod_rewrite.c>
  • RewriteEngine On
  • RewriteCond %{http_host} ^(対象サイトのURL)
  • RewriteRule ^(.*)$ (移転後のサイトURL)$1 [R=301,L]
  • </IfModule>

.htaccessでページ単体を301リダイレクト

  • <IfModule mod_rewrite.c>
  • RewriteEngine On
  • RewriteRule ^(対象ページのURL)$ (移転後のページURL) [R=301,L]
  • </IfModule>

302リダイレクト

302リダイレクトは、301リダイレクトと同様、検索エンジンに「サイトが移転した」という情報を伝えます。しかし、こちらは「一時的な移動」という意味を表すため、移転前のサイトの情報が移転後のサイトに受け継がれることはありません。

302リダイレクトはあくまで「一時的な移動」として使いましょう。例えばメンテナンス中により一時的にサイト移動をしなければならないという風な状況で使います。~数週間程度で元のURLに戻す場合には302リダイレクトを使い、それ以上リダイレクトを続ける必要がある場合は301リダイレクトを使うといった感じで使い分けると良いでしょう。

.htaccessでサイト全体を302リダイレクト

  • <IfModule mod_rewrite.c>
  • RewriteEngine On
  • RewriteCond %{http_host} ^現在のURL
  • RewriteRule ^(.*)$ (移転後のサイトURL)$1 [R=302,L]
  • </IfModule>

.htaccessでサイト単体を302リダイレクト

  • <IfModule mod_rewrite.c>
  • RewriteEngine On
  • RewriteRule ^(対象ページのURL)$ (移転後のページURL) [R=302,L]
  • </IfModule>

その他のリダイレクトの種類

301リダイレクトや302リダイレクト以外にも、リダイレクトの種類はいくつか存在します。あまり使う頻度は多くはないものですが、簡単にご紹介します。意味もなく選択することが無いように注意をしましょう。

303リダイレクト

See Other(他を参照せよ)の意味があるリダイレクト時に指定します。リダイレクト先のURLに対し、GETメソッドでアクセスすることが決められています。
例)フォームページでPOST(内容を送信)した後にリダイレクトでTOPページヘ戻したい場合、TOPページに対して同じデータをPOSTしても意味がないため、303リダイレクトでGETに変更する、といった用途で使われます。
※GET,POSTの違いはコチラの記事が参考になります。興味がある方はどうぞ。

.htaccessで303リダイレクト

  • <IfModule mod_rewrite.c>
  • RewriteEngine On
  • RewriteRule hoge\.html$ (移転後のURL) [R=303,L]
  • </IfModule>

307リダイレクト

Temporary Redirect(一時的なリダイレクト)の意味があるリダイレクト時に指定します。内容としては302リダイレクトとほぼ同じですが、307では「リクエストに使用した動詞(GETメソッドやPOSTメソッド)をそのまま使う」という違いがあります。そのため、リダイレクト元でGETやPOSTの指定があり、それをそのままリダイレクト先へ引き継がせたい場合は、307リダイレクトを使います。

.htaccessで307リダイレクト

  • <IfModule mod_rewrite.c>
  • RewriteEngine On
  • RewriteRule hoge\.html$ (移転後のURL) [R=307,L]
  • </IfModule>

まとめ

一口にリダイレクトと言っても、移転後のURLに自動的にユーザーを促す意味では同じですが、表現する意味がそれぞれ異なります。使い方次第で、スムーズにサイト移転を行うこともできますし、逆にページランクを引き継ぐことができなかったり、SEO上のペナルティを受けることもあります。WordPressサイトの場合は今回紹介した内容についても、.htaccessを作成、編集せずとも、プラグインで設定できるものがありますので、設定の際は間違ったリダイレクト種を指定しないように。注意するようにしましょう。サイト移転、ページURL変更などの時は参考にしていただければ幸いです。