Webサイトにアクセスしたときや、自社サイトを更新した直後に「500 Internal Server Error」という無機質なメッセージが表示され、画面が真っ白になってしまった——。そんな経験に、頭を抱えているWeb担当者の方は少なくないはずです。原因がサーバー側にあるのか、自分の操作ミスなのかも分からず、「いつ治るのか」「今どうすればいいのか」と不安になるのは当然のことです。
500エラーは、原因を切り分けて一つずつ確認していけば、多くのケースで自力での解消や再発防止が可能なエラーです。この記事では、500エラー(Internal Server Error)の意味やHTTPステータスコードの基礎から、発生する主な原因、発生時の具体的な対処法、SEOやビジネスへの影響、そして未然に防ぐための対策までを体系的に解説します。WordPressサイトを運用している方にも役立つよう、実務的な手順を交えて紹介します。
500エラー(Internal Server Error)とは
500エラーとは、WebサーバーがリクエストされたページやAPIの処理を実行しようとした際に、予期しない問題が発生し、リクエストを正常に完了できなかったことを示すHTTPステータスコードです。正式名称は「500 Internal Server Error」で、日本語では「内部サーバーエラー」と訳されます。
重要なポイントは、500エラーがサーバー側で起きている問題を示すエラーであるという点です。ブラウザ(クライアント)側の操作ミスやURLの打ち間違いが原因ではなく、Webサイトを提供しているサーバー側で何らかの不具合が起きているサインだと理解しておくと、原因の切り分けがスムーズになります。
HTTPステータスコードの基礎知識
HTTPステータスコードは、ブラウザがWebサーバーにリクエスト(要求)を送ったときに、サーバーが「その処理がどうなったか」を3桁の数字で返す仕組みです。先頭の数字によって、次のように大きく5つのグループに分類されています。
| ステータス | 分類 | 意味 | 代表例 |
|---|---|---|---|
| 100番台 | 情報 | 処理継続中 | 100 Continue |
| 200番台 | 成功 | リクエスト成功 | 200 OK |
| 300番台 | リダイレクト | 転送処理 | 301 恒久的移動 |
| 400番台 | クライアントエラー | 要求側の問題 | 404 Not Found |
| 500番台 | サーバーエラー | サーバー側の問題 | 500 Internal Server Error |
500エラーはこのうち「500番台=サーバーエラー」に属します。MDN Web Docsの解説によれば、500 Internal Server Errorは「サーバーがリクエストの実行を妨げる予期しない状況に遭遇したこと」を示し、より適切な5xxのステータスコードが見つからない場合の汎用的な(catch-all)エラーとして使われるとされています。仕様上はRFC 9110で定義されており、サーバー管理者による調査が必要な問題であることを意味します。
言い換えれば、500エラーは「何かがおかしいが、サーバー自身も具体的に何が問題かを特定して返せない」状態です。だからこそ、原因を特定するにはエラーログの確認など、次に解説する手順が欠かせません。
500エラーと他のエラー(400・404・503)との違い
500エラーを正しく理解するために、混同しやすい他のエラーコードとの違いを整理しておきましょう。
| コード | 名称 | 原因の所在 | 主な内容 |
|---|---|---|---|
| 400 | Bad Request | クライアント側 | リクエストの構文が不正 |
| 404 | Not Found | クライアント側 | 指定されたページが存在しない |
| 500 | Internal Server Error | サーバー側 | サーバー内部で予期しないエラー |
| 503 | Service Unavailable | サーバー側 | メンテナンスやアクセス集中で一時的に利用不可 |
400番台はブラウザやユーザーの要求そのものに問題があるケース、500番台はサーバー側に問題があるケースという切り分けが基本です。特に混同しやすいのが503エラーとの違いです。503はアクセス集中やメンテナンスによって「一時的に対応できない」状態を明示的に伝えるのに対し、500は「原因不明の内部エラー」を示します。同じ5xxでも、503は一時的・意図的なケースが多く、500は継続的な不具合を含む点が異なります。
500エラーが起きる主な原因
500エラーは「一時的に発生するもの」と「継続的に発生するもの」に大別できます。前者はサーバー障害やアクセス集中、後者は設定ミスやプログラムの不具合が中心です。ここでは代表的な原因を整理します。
サーバー側の一時的な障害・アクセス集中による負荷
もっとも切り分けが必要なのが、サーバー側の一時的な要因です。レンタルサーバーやクラウド基盤で障害が発生していたり、キャンペーンやメディア掲載などで急激にアクセスが集中しサーバーに過剰な負荷がかかったりすると、処理が追いつかず500エラーが返されることがあります。
このタイプは、時間の経過やアクセスの落ち着きとともに自然に解消することも多いのが特徴です。まずは自分の操作が原因なのか、サーバー側の問題なのかを見極めることが第一歩になります。
.htaccessファイルの記述ミス
Apacheを利用しているサーバーでは、.htaccessというファイルにリダイレクトやアクセス制御などの設定を記述します。この記述に構文エラーがあると、サーバーが設定を解釈できず500エラーを引き起こします。
よくある原因としては、RewriteRuleの正規表現のスペルミスやエスケープ漏れ、サブディレクトリでのRewriteBaseの指定漏れ、不要な改行や全角文字の混入、リダイレクトの無限ループなどが挙げられます。特にコピー&ペーストで設定を追加した際に、想定外の文字が混ざって500エラーになるケースは少なくありません。
WordPressのテーマ・プラグインの不具合
WordPressで運用しているサイトでは、テーマやプラグインが500エラーの主要な原因になります。具体的には次のようなパターンです。
- プラグイン同士が干渉し、競合を起こしている
- プラグインやテーマの更新後に不具合が発生した
- テーマ内のプログラム(PHP)に記述ミスがある
- 使用中のプラグインがWordPress本体やPHPの最新バージョンに対応していない
大手ホスティング会社やWordPress関連の技術メディアでも、500エラーの原因として.htaccessのエラーと並んでプラグイン・テーマの不具合が繰り返し指摘されています。ページビルダー系プラグイン(Elementorなど)で処理が重くなり、後述するメモリ不足と重なって500エラーになる例もあります。
PHPのバージョンが適切でない
WordPressをはじめとするPHPで動作するシステムでは、PHPのバージョン不整合も見逃せない原因です。サーバーのPHPバージョンを変更した途端、それまで正常に表示できていたサイトが500エラーになることがあります。
これは、古いPHPで使われていた関数が新しいバージョンで非推奨または削除されていたり、以前は警告(Warning)で済んでいた処理が致命的エラー(Fatal error)になったりするためです。特にPHP 7系からPHP 8系へ移行した際は、互換性の問題が発生しやすいとされています。逆に、PHPのバージョンが著しく古く、プラグインやテーマの推奨環境を満たしていない場合にもエラーの原因となります。
パーミッション設定の誤り
パーミッション(ファイルやフォルダのアクセス権限)の設定が不適切な場合も、500エラーの原因になります。サーバー上のファイルには「読み取り」「書き込み」「実行」の権限が設定されていますが、これが誤って過剰な権限(例:777など)や不足した権限になっていると、サーバーがセキュリティ上の理由で処理を拒否し、500エラーを返すことがあります。FTPでファイルをアップロードした際に、意図せず権限が変わってしまうケースに注意が必要です。
サーバーのディスク容量・メモリ不足
サーバーのリソース不足も原因の一つです。ディスク容量が上限に達していると、一時ファイルの生成やログの書き込みができず、処理が失敗して500エラーになります。
また、PHPには1回の処理で使用できるメモリの上限(memory_limit)が設定されており、大量のデータ処理や大きな画像のリサイズ、重いプラグインの実行などでこの上限を超えると、メモリ不足によって500エラーが発生します。一時的にはメモリ上限を引き上げることで解消できますが、同じエラーが繰り返される場合は、処理内容そのものの見直しが必要です。
500エラーが発生したときの確認・対処法
原因の候補が分かったところで、実際に500エラーが発生したときの確認・対処の流れを解説します。「一時的な要因かどうかの切り分け」→「ログによる原因特定」→「原因別の修正」という順序で進めるのが基本です。
まず行うべき基本チェック(再読み込み・時間を置く)
最初に、サーバー側の一時的な問題かどうかを確認します。以下の基本チェックを行いましょう。
- ページを再読み込みする — 一時的な負荷が原因なら、時間をおいて再アクセスすると解消していることがあります。
- 少し時間を置いてから再アクセスする — アクセス集中や短時間の障害であれば、数分〜数十分で復旧するケースがあります。
- ブラウザのキャッシュをクリアする — ブラウザに保存された古いデータが影響している場合があります。
- 別の端末・回線・ブラウザで確認する — 自分の環境固有の問題かどうかを切り分けます。
自分が更新作業をした直後にエラーが出た場合は、時間を置いても解決しない継続的な原因である可能性が高いため、次のログ確認に進みます。
エラーログの確認方法
500エラーの原因を特定する上で、もっとも確実な手がかりがエラーログです。画面上には汎用的な「Internal Server Error」としか表示されませんが、サーバーのエラーログ(error_log)には、何が原因でエラーが発生したのかが具体的に記録されていることが多くあります。
エラーログは、レンタルサーバーの管理画面や、FTPでアクセスできるサーバー上のディレクトリから確認できます。ログに記録されたファイル名や行番号、エラーメッセージを手がかりにすれば、.htaccessの構文エラーなのか、PHPのFatal errorなのか、メモリ不足なのかといった原因を絞り込めます。やみくもに設定を変更する前に、まずログを読むことが解決への近道です。
WordPressでの対処(プラグイン/テーマの無効化)
WordPressサイトで500エラーが発生し、管理画面にすらログインできない場合は、FTPやサーバーのファイルマネージャーを使って対処します。プラグインの切り分け手順は次のとおりです。
- FTPで
wp-content/pluginsフォルダにアクセスする。 pluginsフォルダの名前をplugins_oldなどに一時的に変更する(全プラグインを一括で無効化)。- サイトが正常に表示されれば、原因はプラグインだと特定できる。
- フォルダ名を元に戻し、管理画面からプラグインを一つずつ有効化して、どのプラグインが原因かを突き止める。
テーマが原因と疑われる場合は、wp-content/themes内で使用中のテーマフォルダ名を変更し、デフォルトテーマに切り替わることで表示が回復するかを確認します。作業前には必ずバックアップを取っておきましょう。
.htaccess・パーミッションの修正手順
.htaccessが原因と疑われる場合は、次の手順で切り分けます。
- FTPでルートディレクトリの
.htaccessファイルを.htaccess_oldなどにリネームする。 - サイトが表示されれば、
.htaccessの記述が原因と判明する。 - WordPressの場合は、管理画面の「設定」→「パーマリンク設定」を開いて変更を保存すると、正しい
.htaccessが自動生成され、解消することがある。
自分で記述を追加した場合は、複雑なルールを一度に入れず、シンプルなルールから順に追加して動作を確認していくと、問題箇所を特定しやすくなります。
パーミッションが原因の場合は、FTPソフトやサーバー管理画面から権限を適切な値に修正します。一般的にはファイルは644、ディレクトリは755が標準的な設定とされています。誤って過剰・不足した権限になっていないかを確認しましょう。
自分で解決できない場合はサーバー会社に問い合わせる
ここまでの手順を試しても原因が特定できない、あるいはサーバー側の障害が疑われる場合は、契約しているレンタルサーバー会社やホスティング事業者への問い合わせが有効です。問い合わせの際は、以下の情報を整理して伝えると対応がスムーズになります。
- エラーが発生したURLと発生日時
- エラー発生の直前に行った作業(更新・設定変更など)
- エラーログに記録されていたメッセージ
- すでに試した対処法
サーバー側の障害であれば、事業者の障害情報ページやステータスページで状況が公開されていることも多いため、あわせて確認しておくとよいでしょう。
500エラーがSEO・ビジネスに与える影響
500エラーは、ユーザー体験を損なうだけでなく、検索エンジンからの評価やビジネス機会にも影響を及ぼします。放置してよいものではありません。
検索順位・インデックスへの影響
Googleのクローラー(Googlebot)がサイトを巡回した際に500エラーが返されると、そのページをクロールできず、内容を評価できません。海外のSEO情報では、Googleは5xxエラーをサーバー過負荷のサインとして扱い、エラーが続くとクロール頻度を下げるとされています。一時的なエラーであれば大きな影響は出にくいものの、500エラーが長期間・頻繁に続くと、ページがインデックスから削除され、検索順位の低下につながる可能性があると指摘されています。
一般に、404などの400番台エラーよりも500番台エラーのほうが、検索評価への影響が大きいと考えられています。ただし、サーバーの問題が解消されれば、検索評価は比較的早期に回復するとも言われています。つまり、「エラーを長引かせないこと」「早期に検知して復旧すること」がSEO上のダメージを最小化する鍵になります。
Googleサーチコンソールでの確認方法
自社サイトで500エラーが発生していないかは、Googleサーチコンソールで確認できます。主なチェック方法は次のとおりです。
- ページのインデックス登録レポート:「ページがインデックスに登録されなかった理由」の一覧に「サーバーエラー(5xx)」の項目があれば、Googlebotのクロール時にサーバーエラーが返されたURLが存在することが分かります。項目をクリックすると対象URLの一覧と最終クロール日を確認できます。
- URL検査ツール:画面上部の検索バーに個別のURLを入力すると、そのページで現在もエラーが続いているかを確認できます。
サーチコンソールでは、5xxエラーへの対処として、動的ページへの過剰なリクエストを減らすこと、サーバーの停止・過負荷・設定ミスがないか確認すること、Googleのクローラーを誤ってブロックしていないか確認することなどが推奨されています。定期的にレポートを確認し、エラーを早期に発見できる体制を整えておきましょう。
500エラーを未然に防ぐための対策
最後に、500エラーを繰り返さないための予防策を紹介します。トラブル発生後の対応だけでなく、日頃の運用体制づくりが再発防止につながります。
定期的なバックアップと監視体制の構築
万が一500エラーで表示できなくなっても、バックアップがあれば正常な状態に素早く復旧できます。データベースとファイルの両方を定期的にバックアップし、復元手順も確認しておきましょう。多くのレンタルサーバーには自動バックアップ機能が用意されているため、活用するのがおすすめです。
あわせて、サイトの死活監視ツールを導入すれば、500エラーやサーバーダウンを検知した際に即座に通知を受け取れます。エラーを長引かせないためには、「発生に気づける仕組み」を持っておくことが重要です。前述のGoogleサーチコンソールも、定期チェックによる監視の一環として機能します。
プラグイン更新前のテスト環境活用
WordPressのプラグインやテーマ、PHPバージョンの更新は、500エラーの主要な引き金です。本番環境でいきなり更新するのではなく、ステージング(テスト)環境で事前に動作確認してから本番に反映すれば、更新による不具合のリスクを大幅に減らせます。
テスト環境を用意できない場合でも、更新は一度に行わず、更新前にバックアップを取り、一つずつ更新して表示を確認するだけでも安全性は高まります。特にPHPのメジャーバージョンアップ(7系→8系など)の際は、使用中のプラグインやテーマが新バージョンに対応しているかを事前に確認しておきましょう。
まとめ
500エラー(Internal Server Error)は、サーバー側で予期しない問題が発生したことを示す汎用的なHTTPステータスコードです。原因は、サーバーの一時的な障害やアクセス集中といった一時的なものから、.htaccessの記述ミス、WordPressのテーマ・プラグインの不具合、PHPバージョンの不整合、パーミッション設定の誤り、ディスク容量・メモリ不足といった継続的なものまで多岐にわたります。
対処のポイントは、「一時的な要因かどうかの切り分け」→「エラーログによる原因特定」→「原因別の修正」という順序で、一つずつ確認していくことです。また、500エラーは検索順位やインデックスにも影響し得るため、Googleサーチコンソールでの定期的な確認と、バックアップ・監視体制、テスト環境の活用による予防が欠かせません。
とはいえ、原因の切り分けやサーバー・WordPressの復旧作業には専門的な知識と時間が必要で、本業のかたわら一人で対応するのは負担が大きいものです。
