突然、サイトが「500 Internal Server Error」を返して真っ白――そんな非常事態は、更新直後やサーバ移行、アクセス集中のタイミングで誰にでも起こり得ます。
500のエラーは“サーバ側の想定外エラー”の総称。
原因は多岐にわたるため一概には言えないのですが、想定しているWebページの表示ができなくなるため、最短ルートで原因を絞り込む手順が肝になります。
本ガイドは、閲覧者・サイト運営者・開発/サーバ担当の3ロールに分けて、今すぐ取るべきアクションを整理しました。
復旧後の再発防止とSEOへの影響最小化にも踏み込み、実務で効く運用ノウハウをまとめました。
コピペで使えるコマンドとチェックリストを頼りに、いまの500を最短で解消し、同じトラブルを繰り返さない体制を整えていきましょう。
500 Internal Server Errorとは(他の5xxとの違いも30秒で)
500 Internal Server Error(以下「500エラー」)は、サーバー内部で予期せぬ問題が発生し、リクエストを正常に処理できない状態を表すHTTPステータスです。
同じ5xxでも意味はさまざまです。
| ステータス(実際の表示例) | 意味・説明 |
|---|---|
| 500 Internal Server Error | サーバー内部の一般的なエラー(アプリ・設定・権限・ミドルウェアなど幅広い) |
| 502 Bad Gateway | ゲートウェイ/リバースプロキシが上流(upstream)から不正な応答を受け取った |
| 503 Service Unavailable | 一時的な過負荷・メンテナンスによるサービス停止(意図して返すことも可能) |
| 504 Gateway Timeout | ゲートウェイ/プロキシでのタイムアウト(上流の応答が間に合わない) |
ポイント:500は「とりあえずサーバ側の想定外」。まずはエラーログと直前の変更を疑うのが近道です。
まず取るべき行動(閲覧者/運営者/開発・サーバ担当で分けて即実行)
ここでは500エラーに遭遇した人の立場で何が必要なのか、何ができるのかをまとめていきます。
【閲覧者】ユーザーとしてできること
- ページを再読み込みする
(キャッシュの一時不整合が解消することがある) - 時間を置いてから再訪する
(アクセス集中や一時障害の可能性) - サイト管理者へ連絡する
(どのURLで、いつ発生したかを伝える)
【運営者】サイト管理・広報担当の初動
- サーバー/クラウドの障害情報・CDNの稼働状況を確認
- 発生範囲(全ページか一部か)と発生タイミング(更新直後/移行直後など)を把握
- 監視アラート/アクセス急増の有無を確認(ボット急増やキャンペーン流入)
【開発・サーバ担当】技術的な最短ルート
- 実際のHTTPコードを確認
curl -I https://example.com/ # → HTTP/1.1 500などを確認 - CDN有無(例:Cloudflare)の判定
- レスポンスヘッダに
server: cloudflare
やcf-ray
があるか - CDN由来5xxか、オリジン(自サーバ)起因かを切り分け
- レスポンスヘッダに
- ログを今すぐ開く(後述の“最短切り分けフロー”へ)
技術的な最短ルート:最短切り分けフロー
1) まずHTTPステータスを確定する
まずは本当に500系なのかを事実で確定します。ブラウザの見た目ではなく、ヘッダーを取得して判断を始めてください。
curl -I https://example.com/
# => HTTP/1.1 500 Internal Server Error など
ここで 500(Internal Server Error)ならサーバ内部の一般障害、502(Bad Gateway)なら上流からの不正応答、503(Service Unavailable)なら過負荷やメンテの意図的停止、504(Gateway Timeout)なら上流の応答遅延が疑われます。
この段階でどのコードかを確定しておくと、以後の窓口と優先度がすぐ定まります。
2) CDN/プロキシの有無を判定する
まず「エラーを返しているのはエッジ(CDN/プロキシ)か、オリジン(自サーバ)か」を最初に固定します。
ここが曖昧だと、参照すべきログも問い合わせ先もズレ続け、調査時間が倍増します。
判断材料はレスポンスヘッダーです。
curl -I で取得し、server、via、x-cache、x-served-by、Cloudflare なら cf-ray や cf-cache-status、CloudFront なら x-amz-cf-id など、CDN固有の痕跡を探します。
これらが見えるならCDN経由、見えない(あるいは自社Webサーバ固有の署名のみ)ならオリジン直結の可能性が高い、という立て付けです。
curl -I https://example.com/
# HTTP/2 500
# date: Wed, 03 Sep 2025 09:12:34 GMT
# server: cloudflare
# cf-ray: 8bcd1234abcd1234-NRT
# cf-cache-status: DYNAMIC
# content-type: text/html; charset=UTF-8
ヘッダーにCDNの痕跡があり、さらにCloudflareの 520〜527 等“CDN固有の5xx”が返っているなら、まずはCDN側ドキュメント・ダッシュボード・WAF/レート制限設定の確認が先行します。
逆に、「500 Internal Server Error」などオリジン起因の5xxがCDN経由でそのまま転送されているだけなら、次のステップでオリジンのエラーログへ進むのが最短です。
判断に自信が持てない場合は、許可された範囲でオリジンへ直接当てる検証(一時的にCDNをバイパス/開発モードの活用/運用ルールに沿った短時間のCDN停止)を行い、同じURLで挙動が変わるかを比べます。
検証後は必ず元の構成に戻し、CDNキャッシュや一時的な緩和設定が残留しないように片付けます。
ここで「エッジ起因か、オリジン起因か」を決め打ちできれば、以降は迷わず該当側のログと設定に集中できます。
3) サーバ別ログの入口を開く(まず“どこを見るか”)
原因特定の主戦場はログです。
まずはエラーログを開き、同時刻のアクセスログと突き合わせて「いつ・どのURLで・どんなエラーが出たか」を事実で固めます。環境ごとの“入口”は次のとおりです。
Apache(+PHP).htaccess の記述ミス、Rewriteのループ、権限不整合はここで見つかります。
# 代表的なエラーログの場所
/var/log/apache2/error.log
/var/log/httpd/error_log
# 直近のエラーログを確認
sudo tail -n 200 /var/log/apache2/error.log
# 同時刻のアクセスログで 500 を抽出(時刻の突き合わせ)
sudo grep " 500 " /var/log/apache2/access.log | tail -n 20
Nginx(+PHP-FPM)upstream prematurely closed connection や FastCGI/Proxy のタイムアウトはここに出ます。
# エラーログ/アクセスログ
/var/log/nginx/error.log
/var/log/nginx/access.log
# エラーの直近を確認
sudo tail -n 200 /var/log/nginx/error.log
# 500応答の直近を確認
sudo grep " 500 " /var/log/nginx/access.log | tail -n 20
# 設定の構文チェック(変更直後なら必ず)
sudo nginx -t
PHP-FPM
メモリ不足、致命的エラー、プール枯渇(max_children 到達)などの兆候を拾います。
# systemd 管理のFPMログ(例:PHP 8.2 の場合)
journalctl -u php8.2-fpm --since "15 min ago"
# ログファイル運用の環境
/var/log/php8.2-fpm.log
# 参考:現在のメモリ上限(暫定引き上げ前に把握)
php -i | grep memory_limit
IIS(Windows)
構成エラー(例:500.19)やモジュールの失敗はIISログとイベントビューアで追えます。
# IIS のW3SVCアクセスログ(サイトIDごと)
C:\inetpub\logs\LogFiles\W3SVC*\u_exYYMMDD.log
# 失敗要求トレース(有効化して詳細を採取)
# IIS Manager → サイト → Failed Request Tracing Rules
突き合わせの“型”
まずエラーログで異常の「直前〜直後」を開き、同じ時刻のアクセスログから該当リクエスト(URL・メソッド・レスポンス時間・ステータス)を拾います。次にアプリケーションのログ(フレームワークやアプリ固有のstorage/logs 等)を同時刻で参照し、SQL/外部API/重い処理の痕跡と線で結ぶ、という順番で読むとブレません。
4) 直前の変更と突き合わせて当たりを付ける
デプロイ、プラグイン/テーマ更新、サーバ移行、設定変更など、直前に触った箇所は最有力候補です。
ロールバックできるなら一度戻し、再現が消えるかを確かめます。消えるなら原因はその差分に限定できます。
差分を最小単位まで分解し、「どの変更が症状を生むか」を一点突破で確定させてください。
5) 暫定復旧(安全側)を先に確保する
ユーザー影響が大きい場合は、恒久対応の前に暫定復旧で被害を抑えます。
トラフィック起因が濃厚ならキャッシュやレート制限を強め、必要に応じて 503 + Retry-After で計画メンテに退避します。アプリ起因が濃厚なら、問題のコンポーネント(プラグイン、拡張、機能フラグ等)を一時停止して可用性を確保し、その上で根治策の検討へ進みます。
6) 原因の固定化 → 修正 → 再検証
再現手順を短くシンプルに定義し、設定やコードを一つずつ戻しながら再発有無を確かめます。
ログのエラー行と同時刻の処理(SQL、外部API、重いジョブ)を結び付けて修正ポイントを絞り込み、修正後は監視メトリクスやエラーログが正常化していること、ユーザー操作で再現しないことを確認して本番確定とします。
7) 終了条件と片付け
デバッグのために緩めた設定(詳細ログ、メモリ上限の一時引き上げ、WAFやFWの一時例外など)は、必ず本番値に原状回復します。
発生原因、影響範囲、対応のタイムライン、再発防止策をインシデントノートに整理し、監視しきい値やキャパシティ計画、変更手順へ反映して、次回の復旧時間をさらに短縮できる体制を整えてください。
500エラーの原因トップ10と一次対応
これから紹介する一覧では、発生しやすい原因・症状のサイン・最初に見る場所・暫定対応をワンビューで紐づけた「現場用早見表」です。
まずは HTTPステータスを確定し、エラーログとアクセスログを同時刻で突き合わせたうえで、症状に近い行から読み進めてください。原因候補を素早く絞り込み、復旧を最短化することが目的です。
「一次対応(暫定)」はあくまで被害を抑えるための応急処置です。表示が戻ったら、必ず根本原因の修正へ移り、デバッグ設定や緩めたルール・上げたリソース値は本番値に戻す前提で運用してください。
変更は可能なら段階的に、戻せる準備(バックアップ・ロールバック手順)を整えてから行うのが安全です。
環境ごとの差異(Apache/Nginx/PHP-FPM/IIS、キャッシュやCDNの有無、CMSの有無)はありますが、「症状 → 確認ポイント → 暫定対応」の読み方は共通です。
以下の表から、いまの状況に最も近い行を起点に進めてください。
| 原因 | 代表的な兆候 | 最初の確認ポイント | 一次対応(暫定) |
|---|---|---|---|
.htaccess/Nginx設定ミス | 更新直後から500、リダイレクトループ | Apache: apachectl configtest/Nginx: nginx -t、直前差分 | 公式テンプレに戻す/問題行をコメントアウトして reload |
| ファイル権限・所有者不整合 | 特定ディレクトリのみ500、アップロード失敗 | ls -la で所有者(例: www-data)と 755/644 目安、SELinux | chown / chmod で是正、必要に応じて restorecon |
| PHP致命的エラー | Fatal error 直後に500 | PHPエラーログの該当行・スタックトレース | 該当コード修正/不足拡張の導入/依存関係の整合 |
| PHPメモリ不足 | Allowed memory size exhausted | memory_limit の値と発生箇所 | 一時的に memory_limit 増/重い処理やクエリの見直し |
| PHP-FPMプール枯渇/タイムアウト | upstream prematurely closed connection、処理遅延 | FPMログ、pm.max_children・pm.max_requests | 一時的にプール拡張/ボトルネック特定・FPM再起動 |
| DB接続失敗 | 認証エラー・タイムアウトで多発500 | .env や接続文字列、DB稼働・ネットワークACL | 資格情報修正/DB再起動/接続先・ポート是正 |
| アプリ更新後の不整合 | Class not found、マイグレーション未実行 | composer install、artisan migrate、OPcache | 変更をロールバック/キャッシュ・OPcache クリア |
| WAF/ModSecurity誤検知 | 特定URL/POSTのみ500、ログにルールID | WAF/ModSecログ、CDNファイアウォールイベント | 該当ルール例外化/閾値調整/誤検知チューニング |
| アクセス集中/スパムクローラ | 一時的な5xx増、CPU高騰 | access.log の多発IP/UA、監視メトリクス | キャッシュ強化/レート制限/悪性UA/IP遮断/一時503 |
| 環境変数・設定ファイル誤記/欠落 | 本番のみ発生、パス・キー不一致 | .env/web.config 等の差分、設定ダンプ | 値修正・再読み込み/再起動で反映確認 |
WordPressで500エラーが出たときの実務手順
WordPressは国内でも利用者が多く、500エラーの“典型的な原因”が明確にパターン化されています。
プラグインやテーマ、.htaccess、PHPバージョンや権限設定など、手を打つ順番さえ間違えなければ最短で表示を戻し、原因の再現性をもって特定できます。
この章では、ダッシュボードに入れる/入れないの両ケースを想定し、WP-CLIが使える環境では「まず表示を安全に復旧→犯人特定」という流れ、SFTPのみでも「最低限の退避とロールバック」で切り抜ける流れを提示します。
途中でdebug.logの安全な活用や、移行直後・更新直後に起きやすい不整合への対処も押さえるため、読了後には “いまの500を戻す” “二度目を防ぐ” の両方に必要な具体策が揃います。
現状把握と“すぐ戻せる準備”
SSH が使えるなら、まず状況を固定してバックアップを取ります。表示が復旧しても原因追跡に戻れるように、DB と wp-content を最低限確保してください。
# WordPress ルートで
wp db export ./backup-$(date +%F).sql
tar -czf ./wp-content-$(date +%F).tar.gz wp-content
ブラウザの“見た目”よりも、curl -I で実ステータスを確認して 500 系かどうかを事実で押さえます。
curl -I https://example.com/
WP-CLIで“表示だけ”先に戻す(SSH 可能時)
機能を最小化して原因候補を切り分けます。プラグインとテーマを安全側に寄せ、パーマリンクやキャッシュを整えます。
# すべてのプラグインを一時停止
wp plugin deactivate --all
# デフォルトテーマへ切替(例:Twenty Twenty-Five)
wp theme activate twentytwentyfive
# URL ルールの再生成
wp rewrite flush
# オブジェクト/ページキャッシュをクリア(導入済みの場合)
wp cache flush || true
# コアの破損チェック
wp core verify-checksums
ここで表示が戻るなら、原因は「特定プラグイン/テーマ/.htaccess」のいずれかにほぼ絞られます。
ログイン不能・WP-CLI不可のとき(SFTP/ファイル操作で復旧)
ダッシュボードに入れない状況でも、SFTP で最小復旧が可能です。
wp-content/
plugins/ → 一時的に「plugins-off」へリネーム(全停止)
themes/ → 有効中テーマフォルダをリネーム、twentytwenty…系を残す
mu-plugins/ → 問題が疑われる mu プラグインを一時退避
wp-content/object-cache.php / advanced-cache.php → 一時リネーム(キャッシュ無効化)
./.maintenance → 存在すれば削除(メンテ残り対策)
Apache 運用なら .htaccess を標準形に戻すと、Rewrite 由来の 500 を一掃できます。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
デバッグログを“安全に”有効化して原因を拾う
画面にエラーを出さず、ファイルへ記録します。復旧後は必ず元に戻してください。
// wp-config.php
define( 'WP_DEBUG', false );
define( 'WP_DEBUG_LOG', true ); // wp-content/debug.log に出力
define( 'WP_DEBUG_DISPLAY', false );
ログは tail で追います。
tail -f wp-content/debug.log
PHP・権限・メモリ・拡張の基本点検
500 の定番ボトルネックを機械的に潰します。
# PHP バージョン・拡張
php -v
php -m | sort
# 一時的なメモリ増(根治ではない)
# wp-config.php に追記(運用値に戻す前提)
define( 'WP_MEMORY_LIMIT', '256M' );
# 権限・所有者(代表例、環境に合わせて調整)
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chown -R www-data:www-data . # 実際の実行ユーザに合わせる
DB 接続と URL 不整合(移行直後に多い)
wp-config.php の DB 定数を確認し、DB 自体の健全性をチェックします。移行直後は home/siteurl の不整合が 500 の引き金になることがあります。
# DB 健全性
wp db check
# 現在の URL
wp option get home
wp option get siteurl
# 不整合なら修正(例)
wp option update home 'https://example.com'
wp option update siteurl 'https://example.com'
# ドメイン一括置換(慎重に・事前バックアップ必須)
wp search-replace 'http://old.example.com' 'https://example.com' --all-tables
原因の固定化と段階的な再有効化
「直前に触れたもの」から戻しつつ、一つずつ有効化して再現点を絞ります。
# プラグイン一覧を見て、怪しい順に個別有効化
wp plugin list --fields=name,status,update
wp plugin activate akismet
# MU プラグイン・ドロップインの存在も確認
wp plugin list --status=must-use
再現する瞬間=原因の確定です。該当コンポーネントの設定・互換・更新履歴を深掘りし、代替や修正版に切り替えます。
CDN / WAF / キャッシュの整合性を取る
Cloudflare 等を併用している場合は、オリジンが直ってもエッジ側キャッシュや WAF ルールで症状が残ることがあります。復旧直後はエッジのパージや一時的な開発モード、有効化ルールの見直しを行い、同一URLで挙動が一致することを確認してください。
後片付け(本番値へ原状回復)
WP_DEBUG_LOG、一時的に上げたメモリ値、緩めた権限や WAF 例外は必ず戻す。原因・対応・再発防止策をインシデントノートに残し、次回は WP-CLI のコマンドセットとチェックリストを即時に実行できるようにしておくと復旧速度が安定します。
サーバ/ミドル別:具体的対処の勘所
Apache
.htaccessの段階的コメントアウトで問題箇所を特定RewriteRuleのループ/意図しないRewriteBaseに注意LimitRequestBodyなどサイズ制限によるアプリ側エラーも疑う
Nginx
nginx -tで構文確認 →systemctl reload nginxfastcgi_read_timeout/proxy_read_timeoutを適切化try_filesの解決順序ミスでアプリが呼ばれていないケースに注意
PHP-FPM
pm = dynamic時はpm.max_children/pm.max_requestsを計画値へ- スローログ(
slowlog)で遅い関数/クエリを特定
IIS
- 500.19(構成エラー):
web.configの無効なセクション/権限を修正 - Failed Request Tracing を有効化し、問題リクエストの詳細を採取
Cloudflare/CDN
- エッジ5xxかオリジン5xxかをまず判定
- オリジンが原因ならオリジンのログを、エッジ起因ならCDN側ステータス・ルールを確認
ケース別:移行直後・更新直後・一過性/恒常的負荷
サイト移行直後に出る500
環境差分が一気に顕在化する局面です。ドメインやパス、PHP のバージョンや拡張、ファイル所有者や権限、ソケット/TCP の指定、.env・web.config・.htaccess の取り違えなど、設定ドリフトが原因になりがちです。
まずは「どこからどこへ」「何をどう変えたか」を事実に落とし込み、ログと直前の変更を突き合わせます。
現場でまず見るポイント
siteurl/home(CMS)やベースURLの不整合- PHP バージョン・拡張の欠落、OPcache の古残り
- 所有者(例:
www-data)と755/644を目安にした権限のズレ .envの DB 接続・メール・外部APIキーの誤記、Unixソケット⇔TCPの食い違い
# WordPress:URL不整合の確認と修正
wp option get home
wp option get siteurl
wp option update home 'https://example.com'
wp option update siteurl 'https://example.com'
# ドメイン全置換(※事前バックアップ必須)
wp search-replace 'http://old.example.com' 'https://example.com' --all-tables
# 一般:Webサーバ構文チェックと再読み込み
sudo nginx -t && sudo systemctl reload nginx
sudo apachectl configtest && sudo systemctl reload apache2
# 権限・所有者(要・環境合わせ)
sudo chown -R www-data:www-data /var/www/html
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
# PHP / FPM の差分と再読み込み
php -v && php -m | sort
sudo systemctl reload php8.2-fpm
移行直後は「戻せる準備(バックアップ)」が何より速い保険です。表示復旧を優先しつつ、必ず原因を再現可能な形で固定化してから本復旧へ進みます。
更新直後(プラグイン・テーマ・アプリ)の500
依存関係の不一致やキャッシュの不整合、DB マイグレーションの未実行で躓くパターンです。ロールバック可能なら即戻すのが最短で、戻せない場合はキャッシュ系のクリアと依存の整合をそろえてから再検証します。
# WordPress:安全側に寄せる(表示復旧を優先)
wp plugin deactivate --all
wp theme activate twentytwentyfive
wp rewrite flush
wp cache flush || true
wp core verify-checksums
# 特定バージョンへ固定(例)
wp plugin install plugin-slug --version=1.2.3 --force
# Laravel等:依存とキャッシュの整合
composer install --no-dev --prefer-dist -o
php artisan migrate --force
php artisan optimize:clear
php artisan config:clear && php artisan route:clear && php artisan view:clear
# OPcache / FPMの更新反映
sudo systemctl reload php8.2-fpm
更新履歴(どのファイルが、いつ、誰により変わったか)をログと突き合わせ、一つずつ設定やコードを戻して再発有無を確認します。再現した瞬間が原因の確定点です。
負荷が原因の500(恒常/一過性)
スパイク的なアクセス集中、重い同期処理、外部API遅延、DB ボトルネックなどでアプリ層やFPMプールが枯渇して500が出ます。まずは「どのエンドポイントが、いつ、どれだけ」重いのかを数値で掴み、暫定的にキャッシュ・レート制限・一時503で圧を逃しつつ、根治策(非同期化・キャッシュ戦略・スロークエリ対策・スケール)へ進みます。
# 直近の500が多いURLを特定(Nginx 例)
awk '$9 ~ /500/' /var/log/nginx/access.log | awk '{print $7}' \
| sort | uniq -c | sort -nr | head
# システム負荷の概況
top -o %CPU # or htop
vmstat 1 10
PHP-FPM の調整例(計画値に合わせて)
; /etc/php/8.2/fpm/pool.d/www.conf など
pm = dynamic
pm.max_children = 30
pm.start_servers = 6
pm.min_spare_servers = 6
pm.max_spare_servers = 12
; 必要に応じて slowlog を有効化し遅い処理を特定
request_slowlog_timeout = 5s
slowlog = /var/log/php8.2-fpm.slow.log
Nginx のレート制限(例)
# http{} 内
limit_req_zone $binary_remote_addr zone=req_per_ip:10m rate=5r/s;
# server/location 内
limit_req zone=req_per_ip burst=20 nodelay;
根治の方向性(例)
- 画像変換やレポート生成などをキューに逃がす(非同期化)
- ページ/オブジェクト/エッジキャッシュを段階的に導入
- DB のインデックス最適化、N+1 解消、スロークエリ改修
- 外部APIはタイムアウト値とリトライ戦略を見直し、フォールバックを用意
- 計画メンテは 503 + Retry-After で「一時的」を明示
スパイクが過ぎて症状が収まっても、原因の数値化とメトリクス監視を後回しにしないことが再発防止の近道です。
再発防止とSEO影響の最小化
技術的対策
再発を防ぐ鍵は、監視・容量計画・フォールバックを“常時運用”に組み込むことです。
まずは Uptime監視+APM+集中ログ収集 を標準装備にし、障害を即検知→即通知できる体制を整えます。APMで遅いトランザクションや外部API待ちを可視化し、ログは時系列・相関で追えるように集約します。
次に キャパシティ計画。CPU・メモリ・DB・I/O・FPMプールなど、重要リソースのSLOとしきい値を明文化し、継続的にトレンドを監視します。スパイク対策として、キャッシュ(ページ/オブジェクト/エッジ)やキュー化・非同期化の導入も検討します。
万一の際は フォールバックでユーザー体験を守ります。500時にも返せる軽量な静的エラーページを用意し、過負荷や計画停止では**503(Retry-After付与)**へ安全退避。WAFやレート制限は“締め過ぎによる誤検知”を避けつつ、悪性トラフィックの遮断に活用します。
最後に、変更管理を仕組み化します。小さなリリース単位、ロールバック手順の常備、カナリア配信やフィーチャーフラグで影響範囲を制御し、インシデント後はポストモーテムで学びを残して運用基準へ反映します。
SEOの観点
長時間の5xxは評価低下のリスクがあります。復旧後は Search Console で該当URLのエラー検出を確認し、URL検査から再クロールをリクエスト、必要に応じてサイトマップの再送信で回復を促します。
計画メンテや一時的な過負荷は、503+Retry-After で「一時的」を明確化します。誤って200系でエラーページを返さないようにし、CDN側では5xxをキャッシュしない・TTL短縮などの設定で“エラーの長期露出”を防ぎます。
あわせて、クロール統計・ログでクローラの到達状況を確認し、エラー期間と復旧時刻を記録。再発時に素早く説明・検証できるよう、運用ドキュメントと手順書を最新化しておきます。
よくある質問(FAQ)
Q. 500 Internal Server Errorの直し方は?
ログを開く → 直前の変更を疑う → 切り戻す/設定を元に戻す → 原因箇所を最小化して修正が最短です。WordPressならWP-CLIでプラグイン停止・テーマ切替・.htaccess初期化を行い、debug.log で致命的エラーを特定します。
Q. 突然500エラーになるのはなぜ?
更新(プラグイン/テーマ/アプリ)、キャッシュの不整合、メモリ不足、外部API停止、WAFの誤検知など“環境側の小さな変化”が引き金になりがちです。監視と変更履歴の管理で「突然」を減らせます。
Q. 500エラーはクライアント側ではどうすればいい?
閲覧者は再読み込み・時間を置く・管理者への連絡が現実的です。キャッシュや回線の問題ではなく、サーバ側の問題であることが多いからです。
まとめ
500エラーは“原因のデパート”です。
だからこそ、闇雲に触らず最短復旧フローに沿って、閲覧者/運営者/開発のロール別にやることを分け、まずは事実(HTTPコードとログ)を集めるのが近道です。
curl -Iでの確認、CDNの有無判定、Apache/Nginx/PHP-FPM/IISの“どのログをどこから見るか”を押さえておけば、原因は必ず狭まります。
WordPressならWP-CLIでの一括レスキュー(プラグイン停止・テーマ切替・.htaccess初期化)とWP_DEBUG_LOGで致命的エラーを特定し、直前の変更を一つずつ戻して検証するのが鉄則です。
移行直後・更新直後・負荷起因など状況別の“あるある”チェックを前提にすると、無駄な試行を減らせます。
復旧したら終わりではなく、再発防止の設計(監視・APM・キャッシュ・レート制限・WAF調整)と、長時間の5xxを避ける運用ルール(計画メンテは503+Retry-After、Search Consoleでの再クロール要請)までをセットで整えましょう。
今回の対応については記録しておくことをお勧めします。チェックリスト形式でドキュメント化すれば、次回はより早く、より安全に復旧できます。
参考・参照リンク
- MDN Web Docs: 500 Internal Server Error
- MDN Web Docs: 5xx サーバエラーの概要
- Google 検索セントラル:HTTP 5xx とクロール
- WordPress サポート:トラブルシューティング(日本語)
- WP-CLI Handbook
- Apache HTTP Server: ErrorLog / .htaccess
- Nginx: Logging & Error handling
- PHP-FPM: Configuration / Error logging
- Microsoft Docs: IIS 500.19 エラー
- Cloudflare: 5xx エラーのトラブルシューティング
- Kinsta: 500 Internal Server Error(日本語解説)
コメントを残す