500 Internal Server Error は、サーバーが予期しない状況に遭遇し、リクエストを処理できなかったことを示します。より具体的な 5xx コードが当てはまらない場合に使われる、サーバー側の障害全般を表すコードです。
サーバーは内部の詳細を明かすべきではないため、外部から原因がわかることはほとんどありません。本当の原因は、サーバーのエラーログ、アプリケーションのログ、エラー追跡サービスに記録されています。たとえば、捕捉されなかった例外、PHP の致命的なエラー、データベース接続の失敗、.htaccess の構文エラー、サーバーが解釈できない設定ディレクティブなどです。
クライアント側で 500 を解決することはできません。問題が一時的なものであれば、時間をおいて再試行すると成功する場合があります。
レスポンス例
HTTP/1.1 500 Internal Server Error
Date: Fri, 06 Nov 2026 10:15:32 GMT
Server: Apache
Content-Type: text/html; charset=iso-8859-1
Content-Length: 273
Connection: close
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>500 Internal Server Error</title>
</head><body>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error or misconfiguration and was unable to complete your request.</p>
</body></html> SEO とリダイレクトチェック
Google は当初、5xx エラーを一時的なものとして扱います。Googlebot はクロールの頻度を下げ、すでにインデックスされているページはしばらくインデックスに残ります。エラーが続くと、それらの URL はインデックスから削除されます。robots.txt 自体が 5xx エラーを返す場合、Google は一時的にサイト全体をクロール禁止とみなし、クロールを停止します。エラーが 30 日を超えて続くと、最後にキャッシュした robots.txt のコピーを使います。
リダイレクトチェーン内の 500 は、壊れたリライトルールが原因であることがよくあります。たとえば Apache は、リライトルールによって内部リダイレクトが 10 回を超えると 500 を返します(「Request exceeded the limit of 10 internal redirects」)。こうした内部ループが 3xx のホップとして現れることはありません。リダイレクトループチェッカーは URL 間のループを検出しますが、内部ループは 500 として表面化します。
よくある原因と主な用途
- アプリケーション(PHP、Node.js、Python など)で、捕捉されない例外や致命的なエラーが発生した場合。
.htaccessやサーバー設定に、無効なディレクティブや構文の誤りがある場合。- スクリプトのファイルパーミッションや所有者が正しくない場合。
- PHP の
memory_limitなどのリソースが枯渇した場合や、データベースへの接続に失敗した場合。 - リライトルールが内部でループしている場合。