BLOG
25年新卒 WEBエンジニア インターンシップ 受付中

リダイレクト設定におけるステータスコードの選び方と意味

更新日:2023/05/31

Webサイトのリニューアルや移転など、さまざまな理由でリダイレクト設定が必要になることがあります。
本記事では、サーバーサイドでのリダイレクト設定方法、301と302リダイレクトの適切な使い方やSEOへの影響にも紹介していきます。

リダイレクトとは

リダイレクトとは、Webサイトや特定のページにアクセスしたユーザーを、強制的に別のページへ転送する設定のことです。

リダイレクトの重要性と目的

リダイレクトを行なう具体的なメリットは、以下の通りです。

  • ブックマークやリンクの維持:
    リダイレクトを利用することで、URLが変更されても、以前のブックマークやリンクからアクセスできます。これにより、ユーザーは手動でブックマークを変更したり、リンクを修正したりする必要がありません。

  • 一時的なアクセス制御:
    メンテナンスやリニューアルなどの作業中に、対象のページへのアクセスを制御したい場合、リダイレクトを使用することができます。リダイレクト設定によって、一時的にページへのアクセスを制限できます。

  • 検索エンジンの評価の引き継ぎ:
    URLが変更されても、リダイレクトを適切に設定することで、検索エンジン(例: Google)からの評価やランキングを引き継ぐことができます。これにより、新しいURLでも以前のURLの評価や検索結果の順位を保持することができます。

リダイレクトは、ウェブサイトの管理や改善において非常に重要な役割を果たしています。
それによって、ユーザーエクスペリエンスを維持したり、アクセス制御を行ったり、検索エンジンの評価を保持したりすることができます。

リダイレクトの種類

リダイレクトには、301リダイレクト、302リダイレクト、303リダイレクトなど、様々なステータスコードを伴う形式が存在します。
これらのステータスコードはブラウザに対してリダイレクトの種類や意図を伝え、適切な動作を促します。
代表的なリダイレクトとしては、ステータスコードが「301」の場合は「301リダイレクト」と呼ばれ、ステータスコードが「302」の場合は「302リダイレクト」と呼ばれます。
それぞれ異なる役割や挙動を持っており、ウェブページのリダイレクトにおいて重要な役割を果たしています。
今回はこれらの代表的なリダイレクトについて詳しく説明していきます。

301リダイレクト

301リダイレクトとは、WebサイトやページのURLが完全に変更された場合に使用される仕組みです。主に以下のような状況で301リダイレクトが設定されます。

  • Webサイトがリニューアルや移転され、URLやドメインが変更された場合。

  • URLが正規化され、一貫性を持たせるために変更された場合

  • httpからhttpsへのSSL化が行われた場合

これらの場合、古いURLは将来的に使用されないため、301リダイレクトを設定する必要があります。
301リダイレクトを設定すると、Googleなどの検索エンジンは古いページの評価を新しいページに引き継いでくれます。
また、検索エンジンではリダイレクト後の新しいURLが表示されるようになります。

302リダイレクト

302リダイレクトは、一時的にページの転送が必要な場合に使用されるリダイレクト設定です。
301リダイレクトとは異なり、転送前のページを引き続き活用するため、検索エンジンでは古いページが表示されます。

以下のような場面で302リダイレクトが必要となります。

  • Webサイトやページのメンテナンス中の場合

  • WebサイトでA/Bテストを行う場合

  • ユーザーのデバイスに応じて異なるページを表示したい場合

メンテナンスやA/Bテストが終了したら、リダイレクトを解除して元のURLに戻します。
また、デバイスに応じてページを切り替える場合は、元のURLと転送先のURLの両方を使用します。

302リダイレクトは一時的なリダイレクトが必要な場合や、転送前と後の両方のページが必要な場合に適しています。
ただし、301リダイレクトが適切な場合に302リダイレクトを設定するのは、検索エンジンからのマイナス評価につながってしまいます。

そのため、どちらのリダイレクト設定が適切であるか注意が必要です。

リダイレクト設定方法

リダイレクトの設定方法には、次のような方法があります。

  • 「サーバーサイドリダイレクト」:
    .htaccessやPHPを使用する方法です。サーバーサイドでの処理によってリダイレクトを行います。

  • 「クライアントサイドリダイレクト」:
    meta refreshやJavaScriptを使用する方法です。クライアント(ウェブブラウザ)側での処理によってリダイレクトを行います。

ただし、クライアントサイドリダイレクトは、検索エンジンの評価やアクセス解析などにおいて不具合のリスクがあります。
そのため、サーバーサイドリダイレクトが設定できる場合は、できるだけクライアントサイドリダイレクトは避けるべきです。

今回は、サーバーサイドリダイレクト設定の方法をご紹介します

「.htaccess」を使ったリダイレクト設定

.htaccessファイルの有効範囲と設置場所について説明します。.htaccessファイルは、配置したディレクトリとそのサブディレクトリ全体に適用されます。

例えば、ウェブサイト全体でリダイレクトを有効にする場合、.htaccessファイルをウェブサイトのトップレベル(ルート)に配置します。
しかし、AとBというサブディレクトリが存在する場合、Aに.htaccessファイルを配置してもBにはリダイレクトは適用されません。
この場合、AおよびAのサブディレクトリのみにリダイレクトが適用されます。

単体ページのリダイレクト

ディレクトリをリダイレクト

http://からhttps://にリダイレクト(SSL化)

特定のファイルタイプのリダイレクト

URLパラメータを含むリダイレクト

特定のIPアドレス以外をメンテナンスページへリダイレクト

スマホなら/sp/へリダイレクト

PHPを使ったリダイレクト設定

PHPを使用したリダイレクト設定において、リダイレクトは実行されたPHPファイル内でのみ有効です。

具体的な手順は以下の通りです。
まず、PHPファイル内でheader関数を利用してリダイレクトを行います。この際、適切なステータスコード(例: 301、302)とリダイレクト先のURLを指定します。リダイレクトが行われた後は、それ以降のプログラム処理は不要なので、exit関数を使用してプログラムを終了します。

また、文字列の出力が発生すると自動的にheaderが送信されてしまうため、header関数の前に改行やスペースなどの文字列が出力されないように注意しましょう。

以下の例では、共通ファイルにリダイレクト設定を記述する方法を紹介します。

単体ページ・ディレクトリをリダイレクト

このコードでは、$redirects配列にリダイレクトのパターンと対応するターゲットを定義します。
foreachループを使用して、リクエストされたURLがパターンに一致するかどうかを確認し、一致する場合はリダイレクトを行います。

http://からhttps://にリダイレクト(SSL化)

使い分け

最も効率的なリダイレクト設定を行う場合、ウェブサーバーレベルでの迅速な応答が重要です。
そのため、基本的には(Apacheを使用している場合).htaccessファイルにリダイレクトを記述することが推奨されています。

しかし、複雑な設定や条件分岐が必要な場合は、.htaccessの制約により限定されることがあります。
そのような場合には、より柔軟な表現が可能なPHPを使用してリダイレクト処理を行うことになります。PHPを使うことで、複雑な条件や処理を行うことができます。

まとめ

リダイレクト自体はSEOに影響を与えることはありませんが、誤った設定方法を適用するとサイトの評価を失ったり悪影響を与える可能性があります。
そのため、正しい知識を持ってリダイレクトを行うことが重要です。301リダイレクトは永久的な移転を表し、302リダイレクトは一時的な転送を表します。
どちらのリダイレクトも目的に合わせて適切に使用しましょう。

また、複数の箇所でリダイレクト設定をするとサイト内のリダイレクトを管理することが難しくなるため、注意が必要です。
双方にコメントを残したり、適切な工夫を行うことで管理のしやすさを向上させましょう。

正確なリダイレクト設定とその管理は、サイトの移行や改善において重要な要素になると思います。

FOLLOW US