HTTP 302コードは、ウェブサイトの訪問者を一時的に別のURLにリダイレクトする便利な手法です。しかし、ウェブサイトで302リダイレクトエラーが表示されたら、何か問題が発生している合図です。
とはいえ、ご心配なく。この問題は解決することができます。トラブルシューティングをしていきましょう。
まず、HTTP 302コードとは何か、どのように機能するのか、なぜ発生するのかを正確に理解することが重要です。それがわかれば、何が問題なのか、どうすればいいのかが明確になります
この記事では、HTTP 302エラーについて知っておくべきあらゆる点、そして、このエラーを解決するための5つのトラブルシューティングのコツをご紹介します。
それでは、はじめましょう
302 HTTPステータスコードについて動画での解説もご用意しています。
HTTP 302 ステータスコードとは?
302コードは、HTTPステータスコードの一種。これは、サーバーが利用者のブラウザに表示する「お知らせ」のようなものです。
ユーザーがリンクをクリックしたり URL に移動したりすると、ブラウザはウェブサーバーに同じ要求を出します。サーバーは、関連するリソース(例えば、あなたがアクセスしようとしているページ)をHTTPヘッダとともに返します。HTTPステータスコードは、このヘッダーの中に記載されるものです。
平常時であれば、このステータスコードは、ウェブページのどこにも表示されません。エラーが発生したときや、ステータスコードを表示するブラウザ拡張機能を使用したときにのみ、表示されます。
「3xx」ステータスコード(301、302など)は、”リダイレクトコード”の一種です。サーバーが要求されたリソースの代わりに別のリソースを返すたびに表示されます。
つまり、アクセスしようとしたウェブサイトのページではなく、別のページにリダイレクトされたときに表示されるものです。
301と302の決定的な違いは、前者が恒久的なリダイレクトに使用されるのに対し、後者は一時的なリダイレクトに使用されることです。
また、301リダイレクトは「リンクオーソリティ」を継承しますが、302では考慮されません。これは、検索エンジン最適化(SEO)に大きな影響を与えます。
302リダイレクトの仕組み
ウェブサイト上の一時的に利用できないページに対して302リダイレクトを設定するとします。そして、ユーザーがそのページにアクセスすると、ウェブサーバーは訪問者のブラウザに特別なLocationヘッダで応答します。このヘッダでは、ブラウザがユーザーをリダイレクトすべき、別のURLが指定されます。
例えば、ユーザーがブラウザのURLバーにblog.example.comと入力しても、ウェブサイトの設定により、blogging.example.comにリダイレクトされる、といった具合です。
サーバーの応答には、302ステータスコードと「Location: blogging.example.com」ヘッダの両方が含まれます。この設定は、ユーザーのブラウザに、かかるリクエストを新しいURLにリダイレクトするように指示します。
もちろん、この作業はすべて自動的に、舞台裏で行われます。ユーザーは、この様子を見ることはできません。代わりに、ユーザーのブラウザは自動で新しいリソースへの誘導を行います。
HTTP 302エラーはなぜ発生するのか
ウェブサイトの設定の問題で、302コードが表示されることがあります。例えば、次のようなケースが考えられます。
- ウェブサイトのページで、訪問者の意図しないリダイレクトが発生している
- ウェブサイトのページで、訪問者を誤ったリソースに対しリダイレクトしている
- ERR_TOO_MANY_REDIRECTSエラー(「リダイレクトループ」とも呼ばれる)
これらの問題のうち、実際のエラーページが表示されるのは、最後の1つだけです。Chromeブラウザを使用している場合、リダイレクトループのエラーページは次のようになります。
Mozilla Firefoxでは、このように表示されます。
上記の問題はすべて、何らかの設定ミスが原因です。プラグインの競合、URLの設定、.htaccessファイルの設定の誤りなどが考えられます。
HTTP 302エラーの解決方法(5つの方法)
次に、原因を突き止め、解決するための5つのトラブルシューティングの方法をご紹介します。
作業を始める前に、まずウェブサイトの完全なバックアップを取るようにしてください。これで、何か問題が発生しても、いつでも以前のバージョンに戻すことができます。バックアップには、WordPressのプラグインを使用することができます。
1.リダイレクトが有効かどうかの判断
302レスポンスそのものは、エラーではありません。ユーザーを一時的に別のページにリダイレクトすることは、有効な設定であり、通常、対処が必要なものではありません。
ウェブサイトが、「意図しないかたちで302コードを表示」している場合や、リダイレクトループを引き起こしている場合のみ、エラーとみなされます。そのため、まずはどのURLでHTTP 302コードが発生しているかを確認し、リダイレクトが意図したものであるかどうか、判断することから始めましょう。
そのためには、302エラーの発生が疑われるページに移動し、挙動を確認してみます。一時的に利用できない(表示したくない)ページが正しいURLにリダイレクトされているのなら、そのままで問題ありません。
しかし、ページが間違ったリソースにリダイレクトされる、ブラウザが「ERR_TOO_MANY_REDIRECTS」エラーページを表示してリダイレクトループが疑われる場合には、リダイレクトの一つ(または複数)が正しく設定されていない可能性があります。
2.プラグインを確認する
302エラーやリダイレクトループの最も一般的な原因の1つが、プラグインです。
WordPressリダイレクト系プラグインやYoast SEOなどのSEOツールには、ウェブサイトのリダイレクトを管理してくれるものや、リダイレクトルールを設定できるものがあります。
ルールが誤って設定されていたり、2つのプラグインが競合していたりすると、思わぬ問題が発生することがあります。そのため、サイトにインストールされている各関連ツールの確認が必要です。
例えば、人気のWordPressプラグイン「301 Redirects」を使用している場合、「設定」>「301 Redirects」と進むと、設定を確認することができます。「Redirect Rules」の下に、設定されているすべてのリダイレクトルールが表示されます。
ここに記載されている302リダイレクトがすべて正しいかどうか、確認してください。
また、リダイレクトループを引き起こすような設定をしていないことも確認しましょう。例えば、「ページA」から「ページB」にリダイレクトするように設定している一方で、「ページB」も「ページA」にリダイレクトする設定では、当然エラーが発生します。
複数のリダイレクト系プラグインを使用していて、どれが問題を引き起こしているかわからない場合は、WordPressのプラグインページから1つずつ無効化してみてください(最初に必ずバックアップを取ってください)。
各プラグインを無効化した後、該当するURLに再度アクセスし、302エラーが解消しているかどうか、確認してください。
突然問題が解決した場合、どのプラグインが問題を引き起こしていたかが分かるので、さらにトラブルシューティングを行うか、サイトから削除するかを選択することができます。
3.WordPressのURL設定が正しいか確認する
また、HTTP 302エラーの原因としてよくあるのが、WordPressのURL設定の誤りです。
これを確認するには、WordPress管理画面で「設定]>「一般」に移動します。すると、WordPressアドレス(URL)フィールドとサイトアドレス(URL)フィールドが表示されます。
ほとんどの場合、両フィールドのURLは一致しているはずです。ドメイン名の前の「www」の部分(有り無し等)を含め、両方が同じであることを確認してください。
一致しない場合は、設定を変更します。その後、HTTP 302エラーの表示されたページで問題が解決したか確認してください。
4.サーバーの構成を確認する
また、サーバーの設定が間違っていると、時に302リダイレクトエラーが発生することがあります。そこで、次のステップとして、サーバーの設定を確認します。
お使いのホストがApacheウェブサーバーを使用している場合、「.htaccess」ファイルを確認すればOKです。
まず、cPanelなどのコントロールパネルまたはFTPクライアントを使用して、サイトのサーバーに接続します。次に、サイトのルートディレクトリ(「wp-admin」と「wp-content」フォルダがあるのと同じ場所)に移動し「.htaccess」ファイルを見つけます。
もし、ここで「.htaccess」ファイルが見つからなかったら(そして Apacheサーバーであることが確かな場合)、FileZilla で隠しファイルを表示するように設定する必要があるかもしれません。
次に、このファイルをお好みのテキストエディタで開いてください。次のような中身になっているはずです。
今度は、RewriteXXX
ディレクティブ (上の囲み) を探します。あまり技術的なことは抜きにすると…RewriteCond
と RewriteRule
ディレクティブはある URL から別の URL へのリダイレクトを行うために使用されます。
RewriteCond
ディレクティブは訪問者のリダイレクト「元」URLを指定し、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.サーバー会社に相談する
上記の方法をすべて試しても問題が解決しない場合は、次のステップとして、サーバー会社に相談してみてください。
これより先の302コードエラーのトラブルシューティングには、多くの技術的なノウハウが必要になります。プロの開発者でない限り、関連サービス提供元の助けを借りるのが一番です。
Kinstaは、本気のサポート体制をご用意しています。に精通したエンジニア集団にお任せください。このような問題が発生したときに、いつでも喜んでサポートいたします。
Kinstaのカスタマーサポートは24時間年中無休です。MyKinstaアカウントにログインし、ライブチャットをクリックするだけで、リアルタイムでサポートエンジニアにご相談いただけます。
まとめ
HTTP 302ステータスコードは、ウェブサイトの訪問者をリダイレクトする、至極まっとうな方法です。ただし、リソースページが一時的に利用できない場合にのみ使用することをおすすめします。
サイトで、302エラーやリダイレクトループが発生したら、できるだけ早く、この問題を解決することが肝要です。さもなければ、SEOやコンバージョンの面で悪影響が出る可能性があります。
おさらいです。以下の5つのステップで、ウェブサイトのHTTP 302エラーの解決にあたることができます。
- 302リダイレクトのあるURLを調べることで、リダイレクトが適切かどうかを判断する
- プラグインのリダイレクト設定が有効であることを確認する
- WordPressのURL設定が正しく行われていることを確認する
- .htaccessファイル(Apacheサーバのみ)内の
RewriteXXX
ディレクティブに誤りがないか、サーバの設定を確認する - それでも問題が解決しない場合は、利用しているサーバー会社に問い合わせてみる
HTTP 302エラーについて、何かご質問がございますか?コメント欄でお聞かせください。
コメントを残す