500エラー(Internal Server Error)とは?原因と解決方法を解説
500エラー(Internal Server Error)を放置するとSEO上の深刻な問題に発展しかねません。本記事では、500エラー(Internal Server Error)が発生する原因や、エラー解消の方法、SEOに対する影響など、具体的な内容を絡めて解説します。迅速なエラー解消のためにお役立てください。
【500エラーの特徴】
特徴 | 説明 |
---|---|
定義 | サーバー内部エラー。サーバーがリクエストを処理できなかった場合に発生する |
原因 | コードのバグ、サーバーの設定ミス、過負荷など |
影響 | WEBサイトが正常に表示されない、ユーザーにエラーメッセージが表示される |
対処方法 | サーバーのログを確認し、エラーの原因を特定して修正する |
よくある原因 | ・アクセスの過多によるサーバーへの過負荷 ・PHPの記述ミス ・.htaccessの書き間違え ・Google bot(クローラー)の過剰アクセス ・パーミッションの誤設定 ・悪質なbot攻撃 |
SEOへの影響 | 長期間発生し続けるとインデックスから削除される可能性がある |
500エラー(Internal Server Error)の意味
500エラー(Internal Server Error)は、サーバー上に異常が生じてブラウザからの要求を適切に処理できない状態を指します。具体的には、「サーバー側に何らかの問題が存在し、詳しい原因は特定できないが、ブラウザの要求に応じることができない状態」を意味します。
このようなエラーが発生した場合、Webサイトの訪問者自身が直接的な対処をすることはできません。サイトの管理者が問題を解決するのを待ち、しばらく経ってから再度サイトにアクセスすることを試みるのが最善の方法となります。
ブラウザに表示される500エラーの表示例
500エラーは、サーバー内部エラーを指すHTTPステータスコードで、何らかの理由でサーバーがリクエストを完了できない場合に表示されます。
具体的なエラーメッセージはサーバーやソフトウェアの種類、設定によって異なりますが、以下は一般的な500エラーの表示例は以下の通りです。
- Internal Server Error
- HTTP 500 - Internal Server Error
- 500. That’s an error.
- HTTP Error 500
- Server Error in '/' Application
- 500 Internal Server Error. Sorry, something went wrong.
- 500 Error. The server encountered an unexpected condition.
- HTTP 500 - Server Error
- 500 Service Unavailable
- We're sorry, but something went wrong on our end.
これらのエラーメッセージは、実際のサーバーやウェブアプリケーションの設定、使用されているプラットフォームや技術によって異なる場合があります。
HTTPステータスコード5XX番台のエラー一覧
500エラーについては、HTTPステータスコード5XX番台のエラーで「具体的な下二桁のコードが見つけられなかった場合に返される番号」になりますので、ステータスコードの見た目だけでは原因の特定ができず、様々な原因が考えられます。
つまり、5XXのエラーはサーバー側の問題を示すものであり、特定のステータスコードを与えることで、問題の原因や性質に関する手がかりを提供することを目的としています。しかし、500エラーはこの5XX番台の中で最も一般的であり、具体的な原因を特定しないエラーコードとして機能します。
▼ 以下は、主要な5xxステータスコードを表形式でまとめたものです。
ステータスコード | 名称 | 説明 |
500 | Internal Server Error | サーバー側での汎用エラーメッセージ。 具体的な理由は明確でない場合に返される。 |
501 | Not Implemented | サーバーがリクエストメソッドをサポートしていない、または実装していない場合に返される。 |
502 | Bad Gateway | 一つ前のサーバーが無効なレスポンスを返した場合に返される。ゲートウェイやプロキシサーバーに関連。 |
503 | Service Unavailable | サーバーが一時的にリクエストを処理できない場合に返される。通常、メンテナンスや過負荷が原因。 |
504 | Gateway Timeout | 上流のサーバーがタイムアウトした場合、またはゲートウェイやプロキシがタイムアウトした場合に返される。 |
505 | HTTP Version Not Supported | サーバーがリクエストで使用されているHTTPプロトコルのバージョンをサポートしていない場合に返される。 |
506 | Variant Also Negotiates | サーバー内の設定エラーによってコンテンツのネゴシエーションが適切に行われない場合に返される。 |
507 | Insufficient Storage | サーバーに十分なストレージがない場合に返される。 |
508 | Loop Detected | サーバーがリクエスト処理中に無限ループを検出した場合に返される。 |
510 | Not Extended | サーバーがリクエストを処理するための必要な拡張機能をサポートしていない場合に返される。 |
511 | Network Authentication Required | クライアントがネットワークアクセスを得るための認証が必要な場合に返される。 |
500エラーの原因と解決方法
前述したように、500エラーは原因の特定ができていません。エラーの内容も様々なので、迅速に原因を特定することが非常に重要です。
しかし、技術的な問題によるエラーは、サイト更新時のファイルが問題になっていることが多いので、まずは更新ファイルの中から、サーバーに問題を引き起こしやすいファイルを確認してみるのが良いでしょう。
以下では、500エラーを引き起こす原因と解決方法を具体的に説明します。
500エラーの原因と解決方法① アクセスの過多によるサーバーへの過負荷
アクセスの集中によるサーバーへの過負荷は、500エラーの原因となります。
正確には、このようなサーバー過負荷の状態で表示されるのは「503 Service Unavailable」というエラーメッセージであり、サービスが一時的に利用できないことを示しています。
一方で「500 Internal Server Error」は、サーバー内部のエラーを示すもので、設定ミスやプログラムのバグなどが原因となって表示されることが多いです。
アクセスの集中が起こる背景には様々な要因があります。例えば、一つのページや記事が突如としてSNSなどで拡散される場合、数分のうちに何千、何万というアクセスが集中することがあります。
また、特定の時間帯にサービスを利用するユーザーが集中する場合や、大規模なプロモーションやセールなどのイベントが実施される際もアクセスの集中が見られることがあります。
解決方法
解決方法としては、まず予期しないトラフィックの増加に対応できるように、サーバーのスケーリングを検討することが考えられます。クラウドサービスを利用している場合は、オートスケーリング機能を活用することで、アクセスの増加を検知した際に自動的にサーバーリソースを増やすことができます。
また、キャッシュの最適化も非常に効果的です。ページキャッシングやオブジェクトキャッシングを適切に設定することで、同じコンテンツへの再アクセスに高速で応答できるようになり、サーバーの処理負荷を軽減します。
CDN(コンテンツデリバリーネットワーク)の導入も一つの解決策となります。CDNを利用することで、ユーザーが近いデータセンターからコンテンツを取得することができ、サイトの応答速度が向上し、オリジナルのサーバーへの負荷を分散させることができます。
最後に、予期せぬトラフィック増加を早期に検知し、適切な対応をとるために、サーバーのモニタリングを常時行うことが重要です。モニタリングツールを使用してサーバーの状態を監視し、異常を感知した際には迅速に通知を受け取ることができるように設定しておくと、事前に問題を察知し対応することができます。
500エラーの原因と解決方法② PHPの記述ミス
PHP(プログラミング言語)のコードの誤記によるプログラムの処理エラーも、500エラーが返される原因となります。また、PHPのバージョンが古くなりサーバーと互換性がなくなってしまった場合や、ファイルが不足している場合等もコードの誤記と同様にエラーが返ってきます。
プログラムの書き間違えや、PHPのバージョンの非互換によるエラーは、
- syntax error
- Call to undefined function ******()
- failed to open stream
などがログに書き出されます。プログラムの書き間違えによるエラーの特定は、更新を行なったプログラムから調査すると良いでしょう。
解決方法
PHPの記述ミスや非互換性が500エラーの原因となる場合、解決方法は主にエラーログの確認とコードの修正に焦点を当てる必要があります。エラーログを詳細に確認することで、どの行やどの関数で問題が生じているのかを特定することができます。
原因を特定できたら、次のステップはコードの修正です。
syntax errorがログに表示される場合、文法の誤りや閉じ括弧の不足、セミコロンの欠落などが原因である可能性が高いので、関連するコード行を特定し、修正を行います。
Call to undefined function ******() がログに表示された場合、存在しない関数を呼び出しているか、必要なファイルやライブラリが正しくインクルードされていない可能性があります。関数のスペルミスや、必要なファイルのインクルードを確認して修正を行います。
failed to open streamが表示された場合、ファイルのパスが間違っているか、必要なファイルがサーバー上に存在しない可能性があります。正しいファイルパスの指定や、必要なファイルのアップロードを確認しましょう。
500エラーの原因と解決方法③ .htaccessの書き間違え
.htaccessの記述ミスも、500エラーの原因となります。
.htaccessはApacheサーバーの動作を制御するもので、小さな間違いもサーバーの挙動に大きな影響を及ぼし500エラーが発生します。
▼ よくある間違いとしては、以下のようなケースがあります。
- 不正なディレクティブ
Apacheに存在しないディレクティブや、古いバージョンのApacheでしかサポートされていないディレクティブを使用すると、エラーが生じます。 - 文法のミス
閉じ括弧の欠如やタイプミスなどの単純な文法のミスがあると、500エラーが発生します。 - モジュール未有効化
特定のディレクティブを使用する前に必要なモジュールが有効化されていない場合、エラーが生じます。php_flagやphp_valueなどの、PHPに関する設定を.htaccessに記述してしまうために、500エラーを出すことが多いようです。 - 不正なフラグの使用
RewriteRuleやその他のディレクティブで使用するフラグが不正である場合、エラーが生じる可能性があります。
これらのミスは、エラーログの確認や.htaccessファイルの段階的なテストによって診断・修正することが可能です。エラーが発生した際は改めて記述内容を確認し、記述の間違え箇所を特定・修正を行いましょう。
解決方法
.htaccessの記述ミスによる500エラーを解決するには、まずエラーログを頻繁に確認することが重要です。
Apacheサーバーはエラーログに詳細な情報を記録するため、ここに記載された情報から具体的なエラーの原因を突き止めることができます。エラーログで指摘された行やディレクティブに注目し、問題の原因を特定してください。
次に、.htaccessファイルの内容を一時的にコメントアウトすることで、記述のどの部分でエラーが生じているのかを特定する方法も有効です。コメントアウトした状態でサーバーの動作を確認し、問題が解消される場合、コメントアウトを1行ずつ戻しながらテストを続け、エラーの原因となる具体的な行を見つけ出します。
モジュールの有効化が必要な場合、Apacheの設定ファイルで該当モジュールを有効化する操作を行う必要があります。必要なモジュールが正しくロードされているかの確認も忘れずに行ってください。
また、.htaccessにPHP関連の設定を記述する場合、適切な形式と文法を使用しているか再確認することが重要です。PHPの設定はphp.iniファイルで行うのが適切な場合もありますので、サーバーの設定や要件に応じて適切な方法を選択してください。
500エラーの原因と解決方法④ Google bot(クローラー)の過剰アクセス
検索対策を行っている場合、Googleの情報収集プログラム(クローラー)からのアクセスは歓迎されるべきものです。
しかし、Googleのクローラーが過剰にアクセスして情報収集することで500エラーが生じる場合があります。ページ数の多いサイトに起こりがちな現象で、複数のページに対して情報収集するため、クロール頻度が急激に上がり、サーバーに掛かる負荷が大きくなってエラーを起こします。
解決方法①
Google Search ConsoleからGooglebotのクロール頻度を減らす事が出来ます。
まずは、Googlebotが過剰にアクセスしていないかを確認します。
確認方法は、Google Search Consoleのメニューから「設定」→「クロール統計」→「レポ―トを開く」の手順でクロール頻度を確認する事が出来ます。
WEBサイトに対してGooglebotが過剰にアクセスを行っている場合は、クロール頻度設定ページに進み、「プロバティを選択」→「Google の最大クロール頻度を制限する」を選択し、クロール頻度を調整します。
解決方法②
robots.txtファイルを適切に設定して、アクセスを許可するページを制限します。robots.txtは、WEBサイトのルートディレクトリに配置されるテキストファイルで、検索エンジンのクローラーに対して、クロールを許可または禁止するページを指示することができます。
robots.txtファイルを使用して、クローラーのアクセスを制限することで、サーバーの負荷を軽減したり、非公開にしたいページをクロールから除外したりすることができます。
例えば、以下のようにrobots.txtを設定することで、特定のディレクトリやページのクロールを制限することができます。
- User-agent: *
- Disallow: /private/
- Disallow: /temp/
上記の設定では、"User-agent: *" で全てのクローラーを対象として、"/private/" や "/temp/" というディレクトリ内のページのクロールを禁止しています。
500エラーの原因と解決方法⑤ パーミッションの誤設定
パーミッションの不適切な設定は、500エラーを引き起こすことがあります。
パーミッションとは、ファイルを実行するための権限の設定の事です。例えば、PHPを設置しているディレクトリやCGIなど、プログラムにアクセスする権限が不足している場合、500エラーが返ってきます。
また、パーミッションの設定による表示エラーでは、プログラムへのアクセス制限で起こる500エラーの他に、特定のファイルに対して制限を設定することによって閲覧を禁止している403エラーがあります。
ディレクトリのパーミッション設定で解消する内容ではありますが、エラー番号の意味を理解し、混同しないようにしましょう。
解決方法
500エラーがパーミッションの誤設定によって生じる場合の解決方法として、まずFTPクライアントやサーバーの管理インターフェースを使用して、問題のファイルやディレクトリのパーミッションを確認します。
多くの場合、サーバーには数値によるパーミッションの指定が可能で、755や644といった設定が一般的です。ただし、これらの設定はサーバーの種類や設定によって異なることがありますので、適切なパーミッションの数値をサーバーのドキュメントやサポートから確認することが重要です。
具体的には、755はディレクトリに対する一般的なパーミッションであり、所有者は読み書き実行が可能で、その他のユーザーは読み取りと実行のみが許可されます。
一方、644はファイルに対する一般的なパーミッションで、所有者は読み書きが可能で、その他のユーザーは読み取りのみが許可されます。
エラーが生じたファイルやディレクトリのパーミッションが不適切であることを確認した場合、正しいパーミッションに変更します。変更後、再度WEBページにアクセスしてエラーが解消されているかを確認します。
500エラーの原因と解決方法⑥ 悪質なbot攻撃
すべてのbotは、Googleのクロールbotのように歓迎されるものではありません。
特定の検索プラットフォームとは関係のない会社や個人が、スクレイピング目的でbotを使用してWebサイトから情報を収集するケースが増えています。
多くのWEBサイトはサービス規約でスクレイピングを禁止しているか、特定のルールを設定しています。しかし、これらの規約やルールを無視する悪質なbotのアクセスが増加すると、サーバーへの負荷が高まり、結果的に500エラーを引き起こす可能性があります。
解決方法
悪質なbot攻撃からの500エラーを解決するためには、まずそのようなbotのアクセスを特定し、制限する必要があります。まずは、サーバーのアクセスログを頻繁に確認し、不自然に高いアクセス頻度や特定のパターンを持つbotのアクセスを特定します。
特定できたら、.htaccessやnginxの設定を利用して、そのbotのIPアドレスやUser-Agentをもとにアクセスを拒否する設定を追加します。また、サーバーサイドでのレートリミッティングの設定を導入することも効果的です。これにより、短時間に多数のリクエストを送るbotのアクセスを自動的に制限することができます。
もし、手動でのbotの特定やブロックが難しい場合は、クラウドベースのWebアプリケーションファイアウォール(WAF)サービスを利用することを検討すると良いでしょう。WAFは、悪質なトラフィックをリアルタイムで検出し、ブロックする能力があります。
WordPressで500エラーが起こる原因と解決方法
▼ WordPressでエラーが起こる原因は、大きく3つです。
原因①:WordPress本体やプラグインのアップデートによるPHPプログラム同士の不具合
原因②:サーバー側PHPのバージョンと、WordPressのPHPのバージョンに互換性がない
原因③:.htaccessの書き間違え
WordPressを利用している中で、画面が真っ白になってしまったり、500エラーが返ってくることは多くの方が経験しているのではないでしょうか。
500エラーが出ていると、ブラウザからWordPressの管理画面にアクセスできなくなってしまいますので、皆さん焦った記憶をお持ちだと思います。とはいえ、WordPressもサーバーもアップデートしなければセキュリティ上問題がありますので、なるべく最新の状態に保っておきたいものです。
こうしたアップデートのタイミングは、500エラーを引き起こしやすいので、FTPの接続が可能であることを確認し、バックアップデータを作成することを習慣化することをお薦めします。
いずれにしても、WordPressで500エラーを引き起こす原因は、更新されたプログラムによることが多いので、まずはアップデートに関わるプログラムの所在を把握し、元に戻せる状態を確保しておきましょう。
WordPressで500エラーが発生した場合の解決方法
サーバーのログを確認して修正箇所の特定を行うのが本来好ましいのですが、単純に表示の復元をするだけであれば、更新前のプログラムをサーバーに設定し直してしまうのが最も簡単です。
ディレクトリの復元をした後におこなってみるべき作業は、以下に書き出します。
表示が復元された場合
■ プラグインの更新プログラムの実行はひとつずつにする
更新プログラムが溜まっている場合、一度に更新を実行したくなるのですが、ひとつずつ更新を行うことでどの更新プログラムが干渉しているのかを特定できます。
更新したことによってエラーを引き起こすプラグインがあった場合、FTPを接続し、該当のプラグインが置かれたディレクトリを削除してみる(または名称を変更する)と良いでしょう。
■ コアファイルの再ダウンロード
ローカルに落としたコアファイルで更新作業を行っていた場合、ローカルのファイルが破損している場合もありますので、再度コアファイルをダウンロードし直す必要があります。
また、更新を長い期間怠ったサイトの更新を行う場合、コアファイルの更新をいきなり最新にするのではなく、インストール済で稼働できているバージョンに近いバージョンのファイルで、複数回に分けて更新することを推奨します。
表示が復元されない場合
■ サーバーのPHPバージョンの確認
サーバーのPHPのバージョンがWordPressのバージョンに互換性がないことがあります。
PHPのどのバージョンで動作可能なのかを確認する必要がありますので、サーバーのコントロールパネルで利用可能なPHPのバージョンを確認し、WordPressの公式サイトでサーバーの設定に適したバージョンを調べましょう。
ステージ環境を用意し、上で調べたバージョンで動作可能か検証し、PHPのバージョンを変更しながら互換性のあるバージョンを探ります。
■ PHPのメモリ制限を増やす
wp-config.phpを編集してPHPのメモリ制限を増やします。これは、サーバーリソースに制限がかかっていることが想定される場合の処置となり、wp-config.phpの編集については推奨されるものではありません。条件の絞り込みができている場合に試してください。
500エラー(Internal Server Error)の影響
500エラーが続けば、ユーザーはWebサイトの閲覧ができなくなります。サーバーのファイルが表示できないため、実質的にサイトやサービスが存在していないのと同じ状態となります。
また、SEOの観点から見れば、このような状況を長期間放置すると、検索インデックスから外されるリスクが高まります。インデックスから除外されるとサイトが検索結果に表示されなくなるため、サイト運営者にとって非常に深刻な問題となります。
検索結果に表示されなくなったサイトは、ユーザーのアクセスが大きく減少するため大きな機会損失となるでしょう。
また、エラーが短時間だけ発生したとしても、その間にサイトを訪れたユーザーにはサービスが提供されない。これは、企業やサービスの信頼性を損なうリスクがあります。
まとめ
■ 500エラーはHTTPステータスコードのひとつで、エラーを表す番号。表示される内容はブラウザやサーバーの設定で異なる。
・Internal Server Error
・500 Internal Server Error
・HTTP 500
・500 Error 等
■ 表記の仕方が異なっても、サーバー内部で起きている原因の分からない不具合で、ユーザー側からは対処のしようがない復旧を待つしかない。
■ 長い期間エラーを放置すると、Googleクローラーからはサイトが機能していないと判断され、インデックスから外される事がある。
■ エラーの原因はプログラムの誤記・.htaccessの誤記・アクセス過多によるリソース不足・パーミッションの設定ミス等によって起きることが多い。
本記事では500エラーについて解説しました。
HTTPステータスコードを覚えておくことで、エラーの原因を突き止めることにも役立ちます。サーバー内部エラーはユーザーには対処のしようがなく、ワードプレスを利用している場合管理画面に入ることもできません。
500エラーの原因を探るには、サーバーのエラーログを探ることが有効なので、迅速に改修を行い、SEOに影響が出ないように対処を行いましょう。
ぜひ、読んで欲しい記事
- SEO対策SEO外部対策とは?やり方と注意点を徹底解説2024/11/19
2024/11/19
- SEO対策内部リンクとは?貼り方とSEO効果について解説2024/10/28
2024/10/28
- SEO対策更新頻度とSEOの関係は?最適なコンテンツの管理方法を解説2024/10/28
2024/10/28
- SEO対策ブラックハットSEOとは?ホワイトハットSEOとの違いと手法一覧2024/10/17
2024/10/17
- SEO対策ペンギンアップデートとは│基本と対応方法・由来を徹底解説2024/10/10
2024/10/10
- SEO対策HTTPステータスコード一覧│意味を完全解説2024/10/08
2024/10/08