500 Internal Server Errorとは

500 Internal Server Errorの意味、エラーが発生する主な原因と対処法、500を含む5xxエラーがSEOに与える影響を解説します。

  1. 500 Internal Server Errorとは
    1. 500が返される仕組み
  2. 500エラーが発生する主な原因
    1. アプリケーションのプログラムエラー
    2. サーバー設定ファイル(.htaccess等)の記述ミス
    3. ファイル・ディレクトリのパーミッション設定ミス
    4. メモリ不足・実行時間のタイムアウト
    5. PHPバージョン非互換・ライブラリ依存の問題
    6. WAF・セキュリティモジュールによるリクエスト拒否
  3. 訪問者として500エラーに遭遇した場合の対処法
  4. サイト運営者向けの500エラー対処法
    1. サーバーのエラーログを最初に確認する
    2. .htaccessの記述ミスをチェックする
    3. ファイル・ディレクトリのパーミッションを確認する
    4. PHPの設定とライブラリ依存を確認する
    5. WordPressの場合のチェックポイント
  5. 500エラーに関するよくある誤解と注意点
    1. 500・502・503の混同
    2. 「とりあえずブラウザを更新」では解消しないことが多い
    3. サイバー攻撃と疑う前にログを確認
    4. 共用サーバーでは「PHPバージョン」の自動更新に注意
  6. 5xxエラーがSEOに与える影響
    1. 5xxはGooglebotにとってクロール阻害要因になる
    2. サーバーエラーが継続するとクロール頻度が下がる
    3. 5xxが継続するとインデックスから除外される可能性がある
  7. 500エラーが発生しているURLを確認する方法
    1. Google Search Consoleのページレポートで確認する
    2. URL検査ツールで個別に確認する
    3. kunugi SEO CheckerでURLをまとめて確認する
    4. サーバーログとあわせて死活監視ツールで早期検知する
    5. 関連記事

500 Internal Server Errorとは

500 Internal Server Error(以下、500)は、サーバー内部で予期しないエラーが発生し、リクエストを処理できなかった状態を示すHTTPステータスコードです。サーバーエラー(5xx番台)に分類され、エラーの原因はサーバー側のアプリケーションや設定にあります。

500が返される仕組み

ブラウザが特定のURLにアクセスすると、リクエストは複数のサーバーや中継機器を経由してWebサーバーに到達します。CDN・リバースプロキシ・ロードバランサーなどの中継機器が、その先(上流)のサーバーに対してリクエストを転送し、応答を受け取ってブラウザに返します。サーバー本体には到達しているが、サーバー側でリクエストを処理する途中に異常が発生した場合、500を返します。

原因の所在は中継機器ではなくサーバー本体である点が502との違い、復旧に時間ではなく原因解消が必要な点が503との違いです。

5xx番台のステータスコードの分類
HTTPステータスコードのうち5xx番台はサーバー側のエラーを示します。代表的なものは以下の通りです。

  • 500 :サーバー側で処理中に予期しないエラーが発生した状態(原因解消が必要)
  • 502 :中継サーバーと上流サーバーの通信障害(経路の問題)
  • 503 :サーバーが一時的に利用できない状態(過負荷・メンテナンス等)
  • 504 :中継サーバーが上流サーバーからの応答をタイムアウトした状態(応答時間の問題)

500エラーが発生する主な原因

500エラーはサーバー側の問題で発生します。代表的な原因は以下の通りです。

アプリケーションのプログラムエラー

PHPやCGIなどのスクリプト内で例外が発生したり、シンタックスエラーが残っていると500を返します。エラーメッセージや例外トレースはサーバーのエラーログ(Apacheのerror_log、Nginxのerror.log、PHPのerror_log等)に記録されます。

サーバー設定ファイル(.htaccess等)の記述ミス

Apacheの.htaccessに書式違反のディレクティブを記述したり、有効でないモジュール指定を含めると500が発生します。設定変更直後に500が出始めた場合は、最後の編集差分を確認します。

ファイル・ディレクトリのパーミッション設定ミス

ファイル/ディレクトリの実行権限・読み込み権限が不足していると、Webサーバーがアクセスできずに500を返します。

メモリ不足・実行時間のタイムアウト

PHPでmemory_limitを超えるメモリを消費したり、max_execution_timeを超える処理時間がかかると、PHPが処理を打ち切って500を返します。php.iniの値や、共用サーバーでの上限値を確認します。

PHPバージョン非互換・ライブラリ依存の問題

サーバーのPHPバージョンを変更した直後に500が出る場合、互換性のない関数・記法が原因です。WordPressサイトでは、テーマやプラグインがサポート外のPHPバージョンで動作しているケースが該当します。

WAF・セキュリティモジュールによるリクエスト拒否

ModSecurity等のWAFが特定パターンのリクエストを拒否し、500を返すケースがあります。エックスサーバーやロリポップの共用サーバーでは、サーバー側のセキュリティ機能が誤検知することがあります。

訪問者として500エラーに遭遇した場合の対処法

他社サイトを閲覧中に500エラーが表示された場合、訪問者として試せる対処法は以下の通りです。

  • ブラウザを更新(リロード)して再度アクセスを試みる
  • ブラウザのキャッシュとCookieをクリアして再アクセスする
  • 別のブラウザ・別のネットワーク(モバイル回線等)からアクセスを試す
  • 緊急の場合はサイト運営者に問い合わせる

500エラーは原因解消が必要な性質のため、訪問者側でできる対処の範囲は限定的です。

サイト運営者向けの500エラー対処法

自サイトで500エラーが発生した場合、サーバー側のログ確認から原因を特定します。

サーバーのエラーログを最初に確認する

500エラーの原因解消は、サーバーのエラーログ確認から始めます。代表的なログ参照場所は以下の通りです。

  • Apacheの場合:/var/log/apache2/error.log または /var/log/httpd/error_log
  • Nginxの場合:/var/log/nginx/error.log
  • PHPの場合:php.iniのerror_logで指定したファイル(共用サーバーは管理画面で確認)
  • WordPressの場合:wp-config.phpにdefine(WP_DEBUG, true);define(WP_DEBUG_LOG, true);を設定してwp-content/debug.logを確認

ログのタイムスタンプと500発生時刻を突き合わせ、エラーメッセージや例外トレースから直接の原因を特定します。

.htaccessの記述ミスをチェックする

直前に.htaccessを編集していた場合、編集差分を確認します。問題箇所を切り分けるため、.htaccessを一時的にリネーム(例: .htaccess_bak)してアクセスできるかを確認すると、.htaccessが原因かどうかが切り分けられます。

ファイル・ディレクトリのパーミッションを確認する

新しくアップロードしたファイルや、サーバー移行直後の場合、パーミッション設定が原因のことがあります。一般的な推奨値は以下の通りです。

対象 推奨パーミッション 備考
ディレクトリ 755 所有者は読み書き実行、それ以外は読み実行のみ
HTMLファイル 644 所有者は読み書き、それ以外は読みのみ
PHPファイル 644 所有者は読み書き、それ以外は読みのみ
CGIスクリプト 755 実行権限が必要
.htaccess 644 所有者は読み書き、それ以外は読みのみ

PHPの設定とライブラリ依存を確認する

memory_limitの上限超過や、max_execution_timeのタイムアウトが疑われる場合、php.iniまたは.htaccessで値を一時的に上げて再現性を確認します。共用サーバーでは管理画面の「PHP設定」から変更します。PHPバージョン変更後の500では、テーマ・プラグイン側の互換性を確認します。

WordPressの場合のチェックポイント

WordPressサイトで500エラーが発生した場合、原因の切り分け順序は以下の通りです。

  1. wp-content/pluginsをリネームして全プラグインを一括無効化し、復旧するか確認する
  2. テーマをデフォルトテーマ(Twenty Twenty-Four等)に切り替えて確認する
  3. .htaccessを一時退避してパーマリンク設定を再保存する
  4. PHPメモリ上限を一時的に引き上げる
  5. WordPress本体のコアファイルを再アップロードする

プラグイン無効化で復旧した場合は、1つずつ有効化して原因プラグインを特定します。

500エラーに関するよくある誤解と注意点

500エラーに関して、SEO担当者・サイト運営者が混同しやすいポイントを整理します。

500・502・503の混同

画面上は同じ「サーバーエラー」と見えても、原因の所在が異なります。500はサーバー内部のアプリケーション例外、502は中継経路の問題、503は一時的な利用不可。原因の所在に応じて対処手順が変わるため、サーバーログで具体的なステータスコードを確認してから対処しましょう。

「とりあえずブラウザを更新」では解消しないことが多い

500はサーバー側の原因解消が必要なケースが多いため、訪問者がブラウザを更新しても解消しないことが大半です。一時的な処理エラー(タイムアウト等)で更新により解消するケースもありますが、再現性がある場合はサイト運営者の対応待ちです。

サイバー攻撃と疑う前にログを確認

500がサイバー攻撃の兆候として表示されるケースは限定的で、多くは内部のプログラムエラーや設定ミスが原因です。WAFのログで攻撃トラフィックが検知されていない場合、エラーログでアプリケーション例外を確認するのが効率的です。

共用サーバーでは「PHPバージョン」の自動更新に注意

共用サーバー(エックスサーバー、ロリポップ等)では、PHPバージョンの自動更新やサポート終了に伴って、互換性のないテーマ・プラグインが原因で500が出始めるケースがあります。サーバー側のお知らせとPHPバージョン設定を定期的に確認しましょう。

5xxエラーがSEOに与える影響

502を含む5xxエラーがSEOに与える影響は以下です。

5xxはGooglebotにとってクロール阻害要因になる

GooglebotがクロールしたURLが5xxを返した場合、その時点ではコンテンツを取得できないため、インデックス更新が遅延します。短時間の障害であれば影響は限定的ですが、長期化するとサイト全体のクロール頻度が下げられる可能性があります。

サーバーエラーが継続するとクロール頻度が下がる

Googleは、サーバーが頻繁に5xxを返すサイトに対してクロール頻度を抑制します。これはサーバーへの負荷を考慮した動作で、結果的にインデックス更新が遅くなる原因になります。

サーバーエラー(5xx)と5xxとして扱われるネットワークエラーとDNSエラーは、Googleのクロールに対してマイナスの影響を及ぼします。Googleはできるだけ多くのページをクロールしますが、サイトの帯域に過度の負担をかけないようにします。
https://developers.google.com/search/docs/crawling-indexing/http-network-errors?hl=ja

5xxが継続するとインデックスから除外される可能性がある

5xxの状態が長期間続くと、対象URLが最終的にGoogleのインデックスから除外されることがあります。早期の復旧と、復旧後のSearch Consoleでの再クロール依頼が望ましい対処です。

500エラーが発生しているURLを確認する方法

自サイトで500エラーが発生しているURLは、以下の方法で確認できます。

Google Search Consoleのページレポートで確認する

Google Search Consoleの「ページ」レポートでは、Googlebotがクロール時に検出した5xxエラーを「サーバーエラー(5xx)」として一覧で確認できます。

  1. Google Search Consoleにログインする
  2. 左メニュー「ページ」を選択する
  3. 「ページがインデックスに登録されなかった理由」内の「サーバーエラー(5xx)」を選択する
  4. 表示される影響を受けたURLの一覧から、対処すべきURLを特定する

このレポートは502・503・504などの5xxを統合表示するため、具体的なステータスコードの種類は、サーバー側のアクセスログを参照して特定します。

URL検査ツールで個別に確認する

特定URLに対するGooglebotの最新ステータスを確認したい場合は、Google Search ConsoleのURL検査ツールを使用します。
ライブテストを実行後、「その他の情報」タブのHTTPレスポンスから、現時点でのHTTPステータスコードを確認できます。

GSCにおけるステータスコード表示箇所

kunugi SEO CheckerでURLをまとめて確認する

弊社のChrome拡張機能「kunugi SEO Checker」を使うと、パネルデータのタブに、各URLのステータス(502・200・503等)が表示されるため、ステータスコードを短時間で確認できます。

ただし、kunugi SEO Checkerで確認できるステータスコードは、ご自身が利用している端末・ネットワーク下での結果となります。

kunugi SEO Checkerでのステータスコード確認手順

  1. 確認したいサイトを開く
  2. kunugi SEO Checkerを起動する
  3. パネルデータのステータスコードを確認する

kunugi SEO Checkerにおけるステータスコード表示箇所

サーバーログとあわせて死活監視ツールで早期検知する

500エラーが頻繁に発生する場合は、外部の死活監視ツールでリアルタイムに検知する仕組みを作るとよいでしょう。

  • UptimeRobot:無料プランで5分間隔の監視と通知が可能
  • Pingdom:レスポンスタイムとステータスコードの統合監視

関連記事

502 Bad Gatewayとは

タイトルとURLをコピーしました