中級者向け 知識

【知識】301、302リダイレクトって何?どうやるの?

Webの知識
この記事は約9分で読めます。

文中の説明画像をクリックすると拡大します。

Pocket

301、302リダイレクトとは何か?

リダイレクトとは、ユーザーがWebサイトやページにアクセスした際、別のURLに転送する仕組みのことを言います。

例えば、以下のような場合に使われます。

  • URLが変更になった際に、古いURLへアクセスしたユーザーを新しいURLへ自動的に移動させる
  • アクセスするデバイス(パソコンやスマートフォンなど)によって専用のページへ移動させる。
  • 一時的にクローズしたいページへのアクセスを、他のページに移動させる。

リダイレクトの時に、「301」や「302」というは数字を記述しますが、これはステータスコードと言って、どのような意図のリダイレクトなのかを表すものです。

ステータスコードには、例えば、ページが見つからない時に表示される「404」や、サーバーでエラーが発生している時に表示される「500」など、様々なものがあります。

ステータスコードについては、こちらも参考にご覧ください。

【知識】よく出るエラーコード(HTTPステータスコード)とその意味を教えて!
インターネットでたまに見かける「404 Not Found」のような文字列は、HTTPステータスコードと呼ばれ、インターネット接続において起こりうる何らかの状態や不具合につけられた通し番号のことです。

301と302の違い

301は、「恒久的に移動した(Moved Permanently)」という意味のステータスコードで、今後は永久的に新しいURLに変わる場合に使われます。

302は、「発見した(Found)」という意味のステータスコードで、転送先のURLは一時的なもので、元のURLが正しい場合に使われます。以前は、「一時的に移動した(Moved Temporarily)」という意味づけがされていました。

301と302の違いは、家で例えると、以下のような感じです。

  • 新しい住居に引っ越しをした場合は301
  • 建て替えなどで一時的に他の家に住んでいる場合は302

301リダイレクトと302リダイレクト、それぞれどのようなケースで使うのか、いくつか例をご紹介します。

301

301リダイレクトは、下記のような場合に使います。

「今後は永久的に新しいURLに変わる場合」

  • ドメインの変更
  • Webページを他のWebサイトへ移行
  • WordPressのパーマリンクを変更
  • 内容が重複するURLの統合(SSL化やwwwありなしの統合など)

302

302リダイレクトは、下記のような場合に使います。

「転送先のURLは一時的なもので、元のURLが正しい場合」

  • メンテナンスや一時的なクローズなどで、一時的に別のURLでコンテンツを表示する場合
  • ABテスト(2パターンを用意して、どちらが良い成果を出せるかの検証)の場合
  • デバイスや国によるURL振り分けをする場合

言い換えると、301リダイレクトは「元のURLに戻る必要がない転送」、302リダイレクトは「元のURLに戻る場合や、どちらのURLも正しい場合」ということになります。

SEO対策としてはどちらがよいか

さて、301、302リダイレクトで話題になるのが、SEO対策の話です。

301、302リダイレクトは、SEO対策に影響があるのでしょうか?あるとしたら、どちらが有利になのでしょうか?

結論から言うと、どちらを使っても問題はありません。

以前は、301リダイレクトを使うとページの評価(PageRank)が新しいページに引き継がれ、302リダイレクトではページの評価は引き継がれない、と言われていました。

しかし、現在は仕様が変更となり、301でも302でもページの評価が引き継がれるようです。

ただし、検索エンジンに登録されるURLは、301リダイレクトだと転送先302リダイレクトだと転送元のURLとなりますので、正確な意味をもとにしたステータスコードを設定するのがおすすめです。

ちなみに、Googleは302リダイレクトでも長期にわたり転送され続けた場合は、転送先のURLが検索エンジンに登録されるようです。

301、302リダイレクトの方法

301、302リダイレクトの実装方法として、主には「.htaccess」を使った方法と「PHP」を使った方法があります。

また、WordPressならプラグインで実装することも可能です。それぞれの実装方法をご紹介します。

.htaccessでリダイレクトする

.htaccessは、サーバーの基本的な動作を制御するためのファイルです。

1ファイルでWebサイト全体、ページ単体など細かく設定でき、管理もしやすいことから、.htaccessを使ってリダイレクトを行うのが一般的とされています。

ページ単位でのリダイレクト

ページ単位でリダイレクトを行う場合は、下記のようなコードとなります(例としてold_page.htmlからnew_page.htmlへ転送する場合)。

【.htaccess】

RewriteEngine on
RewriteRule ^old_page.html$ http://www.sample.com/new_page.html [L,R=301]

行末にある「R=301」というのが、ステータスコードの指定です。302リダイレクトにしたい場合は「R=302」とします。

サイト全体でのリダイレクト

サイト全体でリダイレクトを行う場合のコードです(old_site.comからnew_site.comへ転送する場合)。

【.htaccess】

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.old_site.com
RewriteRule ^(.*) https://www.new_site.com/$1 [R=301,L]

他にも、.htaccessを使うことで、SSLページへリダイレクトしたり、wwwありのページへリダイレクトするなども、設定することができます。

SSLとは何かについては、下記記事もご覧ください。

【知識】SSLって何?WordPressでどうやって導入するの?
SSLとは、Webサイトを公開しているWebサーバーとクライアント(ブラウザ)との間の通信を暗号化する技術のことです。通信が暗号化されていないと、悪意ある第三者から通信内容を読み取られる可能性があります。SSLには、Webサイトの運営者を証明するという役割もあります。

PHPでリダイレクトする

PHPとは、プログラミング言語の1つで、Webサイトでよく利用されています(WordPressもPHPで作られています)。

PHPとは何かについては、下記をご覧ください。

【知識】PHPって何?
PHPは、サーバーサイドで動作するプログラミング言語で、動的にページを生成することができます。プログラミング言語にはコンパイル言語とスクリプト言語がありますが、PHPは記述されたソースコードを一行ずつ機械語に翻訳しながら実行するスクリプト言語です。

PHPでのリダイレクトは、header関数を利用します。実際のコードは下記のようになります(site.comへ転送する場合)。

【PHP】

<?php
header('Location: http://www.site.com/', true, 301);
exit();
?>

ここでは、行末の301がステータスコードになります。

ステータスコードの指定がない場合は302として処理されるので、302リダイレクトをしたい場合は「, true, 301」を削除した形でもOKです。

記載する場所は、画面を表示するファイル(例:index.php)の一番上、<html>タグよりも上のさらに<!doctype html>よりも上です。

PHPでのリダイレクトは、基本的にページ単位で設定することになり、.htaccessより管理がしづらいというデメリットがあります。

また、header関数より前に何かしら出力しているとエラーになることがあることもあるので、使えるならば.htaccessでリダイレクトするのが良いと思います。

WordPressならプラグインで行うのが安全

WordPressを使っている場合でも、.htaccessでのリダイレクトは可能です。

しかし、パーマリンクの設定変更などを行うと.htaccessの書き換えが発生し、セットしていたリダイレクトが消えてしまう場合があります。

WordPressは「Redirection」というプラグインでリダイレクト設定ができるので、こちらを使用するのがおすすめです。

Redirectionの導入方法

Redirectionの導入方法を解説します。

WordPress管理画面メニューから「プラグイン」を選択し、「新規追加」をクリックします。

プラグインの検索に「Redirection」と入力します。Redirectionのプラグインが表示されるので、「今すぐインストール」をクリックして、インストールします。

インストールが完了すると、「今すぐインストール」のボタンが「有効化」になるので、有効化を押してください。

プラグインが有効になったら、初期設定を行います。

先ほどの有効化ボタンを押してプラグインを有効にすると、プラグイン一覧が表示されます。

Redirectionの「設定」をクリックします。

使い方についての説明が表示されます。「セットアップを開始」ボタンをクリックします。

セットアップをしていきます。

3つのチェックボックスがあり、「WordPress の投稿と固定ページのパーマリンクの変更を監視.」と「すべてのリダイレクトと 404 エラーのログを保存する。」の2つは、チェックしておくと便利です。

3つ目の「Store IP information for redirects and 404 errors.」は、リダイレクトと404エラーでのIPアドレスを記録するかというものです。

日本では、IPアドレスは個人情報に当たらないとされていますが、配慮が必要なデータですので、適切な扱いができる方以外はチェックを外しておいた方が無難です。

必要なチェックを入れたら、「セットアップを続行」をクリックします。

最後に、WordPress REST APIが正常に稼働しているかのテストが表示されます。

WordPress REST APIは、WordPressの機能を外部から使用するためのものです。

「良好」や「動作中」であることを確認し、「セットアップ完了」をクリックします。

WordPress REST APIで問題がある場合は、セキュリティプラグインなどが原因となってることがあります。そのさいには、使用しているプラグインを確認してみてください。

プログレスバーが100%になったら、「完了」をクリックで初期設定は完了です。

Redirectionの使い方

では、実際にRedirectionを使った301、302リダイレクションの方法を、ご紹介します。

WordPress管理画面メニューの「ツール」→「Redirection」でRedirectionの設定画面に行くことができます。

上部メニュー「転送ルール」の「新しい転送ルールを追加」から、リダイレクト設定が行えます。

各項目の意味は以下の通りです。

  • ソース URL:リダイレクト元のURL
  • クエリーパラメータ:クエリーパラメーターを引き継ぐかどうか
  • ターゲット URL:リダイレクト先のURL
  • グループ:設定する転送ルールをどのグループに入れるか

最低限、ソース URLとターゲット URLを入力すれば、あとはデフォルトのままでも問題ありません

Redirectionは、特に設定をしなければ301リダイレクトとなります

302リダイレクトにしたい場合は、「転送ルールを設定」ボタンの右にある歯車をクリックし、高度なオプションを表示します。

「一致した時」の「301 - 恒久的に移動」のプルダウンを、「302 - 発見」にすることで302リダイレクトの設定ができます。

次に、サイト全体でリダイレクトを行う場合です。上部メニューの「サイト」をクリックします。

ドメインに引っ越し」のテキストボックスに新しいサイトURLを入力し、「更新」をクリックすると、サイト全体のリダイレクト設定は完了です。

サイト全体をリダイレクトする場合は、転送先のサイト構造が転送元と一緒である必要があります。

 

まとめ

  • リダイレクトとは、Webサイトやページへのアクセスを他のURLへ転送する仕組みのこと。
  • リダイレクトには、恒久的に移動したことを示す301リダイレクトと一時的な転送を示す302リダイレクトがある。
  • SEO対策としては、301リダイレクトでも302リダイレクトでも問題はないが、実際の意味に即したリダイレクトを利用するのがおすすめ。
  • リダイレクトは、「.htaccess」「PHP」で実装できる。
  • WordPressの場合は、プラグイン(Redirectionなど)を使うのが安全。
Pocket