500 Internal Server Errorの意味、エラーが発生する主な原因と対処法、500を含む5xxエラーがSEOに与える影響を解説します。
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エラーが発生した場合、原因の切り分け順序は以下の通りです。
- wp-content/pluginsをリネームして全プラグインを一括無効化し、復旧するか確認する
- テーマをデフォルトテーマ(Twenty Twenty-Four等)に切り替えて確認する
- .htaccessを一時退避してパーマリンク設定を再保存する
- PHPメモリ上限を一時的に引き上げる
- 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)」として一覧で確認できます。
- Google Search Consoleにログインする
- 左メニュー「ページ」を選択する
- 「ページがインデックスに登録されなかった理由」内の「サーバーエラー(5xx)」を選択する
- 表示される影響を受けたURLの一覧から、対処すべきURLを特定する
このレポートは502・503・504などの5xxを統合表示するため、具体的なステータスコードの種類は、サーバー側のアクセスログを参照して特定します。
URL検査ツールで個別に確認する
特定URLに対するGooglebotの最新ステータスを確認したい場合は、Google Search ConsoleのURL検査ツールを使用します。
ライブテストを実行後、「その他の情報」タブのHTTPレスポンスから、現時点でのHTTPステータスコードを確認できます。

kunugi SEO CheckerでURLをまとめて確認する
弊社のChrome拡張機能「kunugi SEO Checker」を使うと、パネルデータのタブに、各URLのステータス(502・200・503等)が表示されるため、ステータスコードを短時間で確認できます。
ただし、kunugi SEO Checkerで確認できるステータスコードは、ご自身が利用している端末・ネットワーク下での結果となります。
kunugi SEO Checkerでのステータスコード確認手順
- 確認したいサイトを開く
- kunugi SEO Checkerを起動する
- パネルデータのステータスコードを確認する

サーバーログとあわせて死活監視ツールで早期検知する
500エラーが頻繁に発生する場合は、外部の死活監視ツールでリアルタイムに検知する仕組みを作るとよいでしょう。
- UptimeRobot:無料プランで5分間隔の監視と通知が可能
- Pingdom:レスポンスタイムとステータスコードの統合監視
