HTTP 302は、ユーザーを一時的に別のURLへ転送する際に使用されるステータスコードです。ただし、意図しない302リダイレクトが発生している場合は、サイトに何らかの問題が生じている可能性があります。

このような問題を解決するには、まず原因を特定する必要があります。

そのためには、HTTP 302の仕組みや、どのような場合に発生するのかを理解することが重要です。仕組みを把握することで、問題の原因を絞り込み、適切な対処方法を見つけやすくなります。

この記事では、HTTP 302の基本的な仕組み、そして意図しないリダイレクトが発生した場合に試したい5つの解決方法をご紹介します。

HTTP 302ステータスコードについて動画での解説もご用意しています。

HTTP 302 ステータスコードとは?

HTTP 302は、HTTPステータスコードの一種です。HTTPステータスコードは、サーバーがブラウザに返す応答で、リクエストの処理結果を伝える役割があります。

リンクをクリックしたり、URLにアクセスしたりすると、ブラウザからWebサーバーにリクエストが送信されます。サーバーはそのリクエストに応じて、ウェブページなどのデータとともにHTTPヘッダーを返します。このヘッダーには、HTTPステータスコードが含まれています。

通常、HTTPステータスコードがウェブページ上に表示されることはありません。エラーが発生した場合や、ステータスコードを確認できるブラウザ拡張機能を使用している場合などに確認できます。

Chromeブラウザの拡張機能を使って表示した、ウェブページのHTTPステータスコード
Chromeブラウザの拡張機能を使って表示した、ウェブページのHTTPステータスコード

301や302などの300番台のステータスコードは、「リダイレクト」を示すコードです。リクエストされたURLとは別のURLへ転送する際に返されます。

つまり、アクセスしようとしたページから別のページへ転送される場合に使用されます。

301と302の大きな違いは、リダイレクトが永続的か一時的かという点です。301は恒久的な転送、302は一時的な転送に使用されます。

また、301と302では、リンク評価の引き継ぎに関する扱いも異なります。ただし、302でもリンク評価が引き継がれる場合があり、こうした違いは検索エンジン最適化(SEO)にも影響します。

302リダイレクトの仕組み

一時的に利用できないページに302リダイレクトを設定すると、ユーザーがそのページにアクセスした際、ウェブサーバーはブラウザにLocationヘッダーを返します。このヘッダーには、転送先となる新しいURLが指定されています。

たとえば、ユーザーがブラウザのアドレスバーに「blog.example.com」と入力した際、「blogging.example.com」にリダイレクトされるよう設定されているとします。

この場合、サーバーは302ステータスコードとともに、「Location: blogging.example.com」というヘッダーを返します。これを受け取ったブラウザは、指定された新しいURLへ自動的にアクセスします。

こうした処理はすべてバックグラウンドで行われるため、ユーザーが意識することはありません。ブラウザ上では、自動的に転送先のページが表示されます。

意図しないHTTP 302リダイレクトが発生する原因

サイトの設定に問題があると、意図しない302リダイレクトが発生することがあります。具体的には、以下のような問題が考えられます。

  • リダイレクトが不要なページで、別のURLに転送されてしまう
  • 本来の転送先とは異なるURLにリダイレクトされる
  • ERR_TOO_MANY_REDIRECTSエラー(リダイレクトループ)が発生する

このうち、実際にエラーページが表示されるのは、最後のリダイレクトループが発生した場合だけです。Chromeでは、以下のようなエラーページが表示されます。

Chrome ERR_TOO_MANY_REDIRECTSのエラーメッセージ
Chrome ERR_TOO_MANY_REDIRECTSのエラーメッセージ

Mozilla Firefoxでは、以下のように表示されます。

FirefoxのERR_TOO_MANY_REDIRECTSのエラーメッセージ
FirefoxのERR_TOO_MANY_REDIRECTSのエラーメッセージ

上記の問題は、いずれもサイトの設定に起因するものです。プラグインの競合やURL設定の誤り、.htaccessファイルの設定ミスなどが原因として考えられます。

HTTP 302リダイレクトの問題を解決する5つの方法

ここからは、意図しない302リダイレクトの原因を特定し、問題を解決するための5つの方法をご紹介します。

作業を始める前に、必ずサイト全体のバックアップを取得してください。万が一問題が発生しても、バックアップがあれば元の状態に復元できます。バックアップにはWordPressプラグインを利用することもできます。

1. リダイレクトが正しく設定されているか確認する

HTTP 302は通常、エラーではありません。ユーザーを一時的に別のページへ転送すること自体は正常な動作であり、基本的に修正する必要はありません。

問題となるのは、意図しない302リダイレクトが発生している場合や、リダイレクトループが起きている場合です。そのため、まずはどのURLで302リダイレクトが発生しているのかを確認し、正しく動作しているかを調べましょう。

具体的には、問題が疑われるページに実際にアクセスし、想定どおりのページに転送されるかを確認します。一時的に利用できないページから適切なURLに転送されていれば、設定に問題はありません。

一方、意図しないページに転送されたり、ブラウザに「ERR_TOO_MANY_REDIRECTS」エラーが表示されたりする場合は、リダイレクトの設定に問題がある可能性があります。

2. プラグインを確認する

意図しない302リダイレクトやリダイレクトループの原因としてよくあるのが、プラグインの設定です。

WordPressのリダイレクト管理プラグインや、Yoast SEOなどのSEOプラグインには、サイトのリダイレクトを管理し、リダイレクトルールを設定できる機能があります。

 Yoast SEO Premiumプラグインのリダイレクト設定ページ
Yoast SEO Premiumプラグインのリダイレクト設定ページ

リダイレクトルールの設定に誤りがあったり、複数のプラグインが競合したりすると、意図しないリダイレクトが発生することがあります。そのため、サイトにインストールされている関連プラグインの設定を一つずつ確認しましょう。

たとえば、人気のWordPressプラグイン「301 Redirects」を使用している場合は、WordPress管理画面で「設定」>「301 Redirects」に移動します。「Redirect Rules(リダイレクトルール)」には、設定済みのリダイレクトルールが一覧表示されます。

301 Redirectsプラグインのリダイレクトルール設定ページ
301 Redirectsプラグインのリダイレクトルール設定ページ

一覧に表示されている302リダイレクトをすべて確認し、転送先が正しく設定されているかをチェックします。

また、リダイレクトループが発生する設定になっていないかも確認してください。たとえば、ページAからページBへリダイレクトし、さらにページBからページAへリダイレクトするよう設定されていると、エラーが発生します。

複数のリダイレクト管理プラグインを使用していて、どれが原因かわからない場合は、WordPress管理画面の「プラグイン」ページから、一つずつ無効化して原因を特定してみてください。作業前には必ずバックアップを取得しておきましょう。

WordPress管理画面の「プラグイン」ページ
WordPress管理画面の「プラグイン」ページ

プラグインを一つ無効化するたびに、問題が発生しているURLにアクセスし、意図しない302リダイレクトが解消されたかを確認します。

特定のプラグインを無効化した後に問題が解消されれば、そのプラグインが原因である可能性が高いと判断できます。その場合は、設定を詳しく調べるか、プラグインの削除を検討してください。

3. WordPressのURL設定を確認する

意図しない302リダイレクトは、WordPressのURL設定に誤りがある場合にも発生します。

設定を確認するには、WordPress管理画面で「設定」>「一般」に移動します。ここには、「WordPress アドレス (URL)」と「サイトアドレス (URL)」の2つの項目があります。

WordPressの「一般設定」ページ
WordPressの「一般設定」ページ

通常、この2つの項目には同じURLを設定します。ドメイン名の前に「www」が付いているかどうかも含め、両方のURLが一致していることを確認してください。

一致していない場合は設定を修正し、問題が発生していたURLに再度アクセスして、302リダイレクトが解消されたかを確認します。

4. サーバーの設定を確認する

サーバーの設定に問題がある場合も、意図しない302リダイレクトが発生することがあります。次に、サーバーの設定を確認しましょう。

Apacheウェブサーバーを使用している場合は、.htaccessファイルを確認します。

まず、cPanelなどのコントロールパネルやFTPクライアントを使用して、サイトのサーバーに接続します。次に、wp-adminやwp-contentフォルダがあるサイトのルートディレクトリに移動し、.htaccessファイルを探します。

サイトのルートディレクトリに格納されている.htaccessファイル
サイトのルートディレクトリに格納されている.htaccessファイル

Apacheサーバーを使用しているにもかかわらず、.htaccessファイルが見つからない場合は、FileZillaで隠しファイルを表示する設定が必要な可能性があります。

ファイルが見つかったら、任意のテキストエディターで開きます。ファイルの内容は以下のようになっています。

.htaccessファイル内の「RewriteXXX」ディレクティブ
.htaccessファイル内の「RewriteXXX」ディレクティブ

次に、上の画像でハイライトされているRewriteXXXディレクティブを探します。RewriteCondとRewriteRuleは、URLのリダイレクトを設定するためのディレクティブです。

簡単に説明すると、RewriteCondはリダイレクトを実行する条件を指定し、RewriteRuleはURLの書き換えや転送先を指定します。以下はその設定例です。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^website.com$
RewriteRule ^(.*)$ http://www.temporary-website.com/$1 [R=302]

末尾の[R=302]は、一時的な302リダイレクトを実行するための指定です。

.htaccessファイル内に、上記のようなRewriteXXXディレクティブの組み合わせがあり、不要なリダイレクトが設定されている場合は、該当する記述をコメントアウトして変更を保存します。その後、問題が発生していたページを再読み込みし、正常に表示されるか確認してください。

万が一の問題に備え、.htaccessファイルを編集する前には、必ずファイルのコピーをダウンロードして保存しておきましょう。

5. 利用中のサーバーに問い合わせる

ここまでの方法を試しても問題が解決しない場合は、利用しているサーバー会社に問い合わせましょう。

これ以上の原因調査には専門的な技術知識が必要になるため、Web開発に精通していない場合は、専門家に相談することをおすすめします。

Kinstaではお客様へのサポートを重視しており、WordPressに精通したサポートチームが、このような問題の解決を常時お手伝いしています。

Kinstaのカスタマーサポート
Kinstaのカスタマーサポート

24時間365日対応しているため、深夜や祝日に問題が発生しても安心です。MyKinstaにログインし、ライブチャットのアイコンをクリックするだけで、サポートエンジニアにすぐ相談することができます。

まとめ

HTTP 302は、サイト訪問者を別のURLへ一時的に転送するためのステータスコードであり、通常はエラーではありません。ただし、302リダイレクトは、ページを一時的に別のURLへ移動する場合に使用するものです。

意図しない302リダイレクトやリダイレクトループが発生すると、SEOやコンバージョンに悪影響を及ぼす可能性があります。そのため、問題が見つかった場合は早めに対処することが重要です。

302リダイレクトの問題を解決するには、以下の5つの方法を試してみてください。

  1. 302リダイレクトが発生しているURLを調べ、意図した設定になっているか確認する

  2. プラグインのリダイレクト設定に問題がないか確認する

  3. WordPressのURL設定が正しいか確認する

  4. .htaccessファイル内のRewriteXXXディレクティブに誤りがないか確認する(Apacheサーバーのみ)

  5. 問題が解決しない場合は、利用しているサーバー会社に問い合わせる

Jeremy Holcombe Kinsta

Kinstaのコンテンツ&マーケティングエディター、WordPress開発者、コンテンツライター。WordPress以外の趣味は、ビーチでのんびりすること、ゴルフ、映画。高身長が特徴。