ページが一時的に移動すると、HTTP 303ステータスコードが返されます。そして、サーバーは要求されたリソースに接続することができず、別のページにリダイレクトされることに。これは面倒なだけでなく、リダイレクトループやキャッシュの問題など、他のエラーにつながりかねません。
「HTTP 303 See Other」ステータスコードの解決は、原因が特定できればその解決方法はシンプル。サーバーの設定を確認したり、WordPressのデバッグモードでエラーログを確認したりすることで解決可能です。
今回は、HTTP 303ステータスコードについて詳しく見ていきます。主な原因を押さえて、素早く解決しましょう!
HTTP 303ステータスコードとは
HTTP 303ステータスコードは、リダイレクトが最近転送されたリソースに接続されないことを意味し、転送ページのような別ページに接続されます。
このエラーメッセージは、サーバーがブラウザに、ページが一時的に移動したことを伝えるもの。サーバーはHTTPリクエストのデータを正常に受信し、別のURLに対して新たにGETリクエストを送信しなければなりません。
「HTTP 303 See Other」のメッセージは、PUTまたはPOSTリクエストの結果として見られるのが一般的ですが、時にDELETEによっても発生することがあります。ブラウザは新たなページを表示することでコードを処理するため、WordPressでは自動的にリダイレクトされます。
しかし、このステータスコードが別の問題を引き起こす可能性も。
- リダイレクトループ(無限ループ)の発生─各ページがユーザーを元のリソースに戻すリダイレクトを行う場合に発生することがあります。
- キャッシュプロキシがリソースをキャッシュするのが困難─プロキシは、200のステータスコードで返されたリソースのみをキャッシュするのが一般的です。
- 帯域幅の消費量の増加やパフォーマンスの低下─303のリソースがキャッシュされていない場合に発生することがあります。
また、303ステータスコードは、他のHTTPステータスコードと異なる動作を見せることを念頭に置いてください。例えば、HTTP 301ステータスコードもリダイレクトメッセージを表示しますが、ページが恒久的に移動された場合のみに見られます。
303に近いステータスコードであるHTTP 302ステータスコードは、一時的な移動を意味します。
HTTP 304ステータスコードは、対象のリソースが変更されていないことを意味し、このメッセージが表示されたら、複製を保持するのがベストプラクティスです。
HTTP 303ステータスコードの原因
HTTP 303ステータスコードは、単にクライアントのリクエストの結果を示すもの。多くのユーザーはこれを「エラー」と認識しがちですが、実際には、単にサーバーが別の場所にリダイレクトしていることを示すメッセージです。
HTTP 303ステータスコードに遭遇する主な原因は、以下の通り。
- リソースが別の場所に移動した:別のURLに移動したなど。
- リソースへのアクセス方法が変更された:容易にアクセスできなくなった、または一般公開されなくなった可能性があります。
- サーバーの設定に誤りがある:よく見られる原因。
- アプリケーションに問題ある:クライアントアプリケーションにメッセージをトリガーするカスタムコードが含まれている場合は、これが原因になっている可能性があります。
基本的には、原因さえわかれば、HTTP 303ステータスコードの解決は簡単です。
HTTP 303ステータスコードの解決方法
HTTP 303ステータスコードの概要がわかったところで、早速解決方法を見ていきましょう。
作業を始める前に、必ずサイトのバックアップを作成しておきましょう。これからご紹介する手順の中には、サイトファイルを編集するものもあり、慎重な操作が必要になります。
また、まずはステージング環境で操作を行うことをおすすめします。問題が発生しないことを確認した上で、本番サイトに変更を反映すれば安全です。
1. サーバーの設定を確認する
303リダイレクトの原因を突き止めるには、サーバーソフトウェアの設定ファイルを開き、意図しないリダイレクトの指示がないかどうかを確認します。まず手始めに、どのウェブサーバーソフトウェアを使っているかを調べましょう。
NginxとApacheは、最も一般的なウェブサーバーで、このどちらかである可能性が高いです。今回は、Apacheの設定ファイルを確認する方法を見ていきます。
まず、サイトファイルにアクセスします。お使いのホスティングサービスでcPanelを使用している場合は、ファイルマネージャーにアクセスしてください。
あるいは、SFTPを使用してサイトファイルに接続することも可能です。これには、FileZillaなどのFTPクライアントをダウンロードしましょう。また、FTPの認証情報も必要になります。
Kinstaをご利用の場合、MyKinstaで簡単にFTP認証情報を参照することができます。該当のサイトを選択し、「情報」画面の「SFTP/SSH」セクションまでスクロールします。
FTPクライアントとの接続を確立したら、ルートディレクトリ(通常はpublic_html)を開いて、.htaccessファイルを探しましょう。
次に、このファイルをテキストエディターで開き、RewriteXXXディレクティブを使用している行を探します。RewriteCondディレクティブは、入力されたURLに対して一致するテキストベースのパターンを定義します。
一致するURLが訪問者によって要求された場合、RewriteCondディレクティブに続くRewriteRuleディレクティブは、別のURLへのリダイレクトを実行します。RewriteRuleの最後にある、[R=303]を探しましょう。
RewriteRuleの最後にこの値が入力されているのを見つけたら、「#」を使って一時的にコメントアウトしてみてください。その後、ウェブサーバーを再起動し、303ステータスコードが消えているかどうかをチェックしましょう。
2. サーバーログを確認する
アプリケーションは、すべてのアクティビティを追跡できるよう、通常何らかのサーバーログを保持しています。例えば、サーバーアプリケーションログでは、どのページがリクエストされ、どのデータベースの結果が提供されたかを確認できます。
一方、ウェブサーバーのログは、サイトを実行するハードウェアに関連し、接続されたサービス(およびサーバー自体)の健全性と状態に関する情報が記録されています。したがって、サーバーログを見つけ、その内容を分析することで、303ステータスコードの解決を試みることができます。
Kinstaでサイトを運営している場合は、MyKinstaで以下3種類のログファイルを閲覧可能です。
- error.log:PHPエラーを含む特定のエラーを記録
- kinsta-cache-perf.log:リクエストに対するキャッシュヘッダの状態(HIT、MISS、BYPASS)を記録
- access.log:その日のすべてのNginxリクエストを記録
ログを表示するには、MyKinstaにログイン後、左側のメニューで「WordPressサイト」を選択し、サイトをクリックして、「ログ」画面に移動します。
最初にerror.logのログファイルが表示されますが、ドロップダウンメニューで確認したいログを選択可能です。
表示したいログを選択すると、サイト上で発生したすべてのエラーまたはリクエストが一覧表示されます。
また、検索バーを使って、ファイル内の特定の文字列を検索することも。SFTPを使ってログをパソコンにダウンロードすることもできます。
サーバーログの確認でこのステータスコードを解決できるわけではありませんが、ログを分析し、原因となっているエラーを突き止めることができます。
3. アプリケーションをデバッグする
最後に、クライアントアプリケーションをデバッグしてみるのも手です。この解決策は、アプリケーションにカスタムコードがあり、それが原因になっている可能性がある場合にぴったりです。
まずは、ローカル環境にサイトのコピーを作成します。これによって、303ステータスコードが発生した状況を正確に再現することができます。また、何らかの問題が発生した瞬間にアプリケーションコードを表示することもできます。
WordPressのデバッグモードを有効化するには、WP Debuggingのようなプラグインを使うのが1番手っ取り早い方法です。
また、wp-config.phpファイルを編集することもできます。この場合は、先ほどのようにcPanelまたはFTPクライアントを使用して、サイトのファイルにアクセスし、サイトのルートフォルダにあるファイルを探します。
wp-config.phpファイルを開いたら、ファイルの一番下にある「That’s all, stop editing!」と書かれた部分に移動して、次のコードを貼り付けます。
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
これで、wp-contentフォルダを見つけて、サイトのエラーを確認することができます。デバッグができている場合は、WordPressがデバッグモードが有効になったときにのみ表示されるdebug.logファイルが出現します。
このファイルをダウンロードしてローカル環境で開き、HTTP 303ステータスコードの原因となっているエラーを特定しましょう。完了したら、値を「false」に変更するか、コードの行を削除することで、デバッグモードを無効にしてください。
HTTP 303ステータスコードがSEOに与える影響とは
サイトの視認性を重視していれば、HTTP 303ステータスコードが検索エンジン最適化(SEO)にどのような影響を与えるかが気になるはず。
幸い、「HTTP 303 See Other」がサイトのSEOに与える影響はほとんどありません。このステータスコードの目的は、あくまで要求されたリソースが移動したことをクライアントに伝えることにあります。
そのため、クライアントはリソースにアクセスするために、別の場所にリクエストを送信しなければなりません。303ステータスコードは、GETリクエストにのみ使用されるように設計されているため、今後リソースにリクエストする際には、別のURLを使用します。
303ステータスコードがSEOに影響を与える可能性は低い一方で、同じ300番台のHTTP 301および302ステータスコードは影響します。と言うのも、それぞれ恒久的、一時的なリダイレクトに使用され、サイトのリンクジュースを転送することができるためです。
まとめ
HTTP 303ステータスコードは、遭遇すると厄介な存在。しかも、「エラー」と認識されることが多く、解決しづらいのも面倒です。今回の記事では、このステータスコードを解消し、サーバーが要求されたリソースに接続できるようにする方法をご紹介しました。
まずはサーバーの設定ファイルを確認し、意図しないリダイレクトが行われていないかどうかを調べること。また、サーバーのログを見たり、アプリケーションをデバッグしたりして、303ステータスコードの原因となっている問題を突き止めましょう。
また、Kinstaのような一流ホスティングサービスを利用すれば、サイトでエラーが発生する可能性が低くなることをご存知ですか?万が一問題が発生しても、プランを問わず、トラブルシューティングをサポートする業界トップクラスのサポートをご提供しています。Kinstaのホスティングプランの詳細はこちらをご覧ください。