SEO対策 500エラー(Internal Server Error)の原因とは?解決方法について解説

500エラー(Internal Server Error)を放置するとSEO上の深刻な問題に発展しかねません。本記事では、500エラー(Internal Server Error)が発生する原因や、エラー解消の方法、SEOに対する影響など、具体的な内容を絡めて解説します。迅速なエラー解消のためにお役立てください。
500エラー(Internal Server Error)について
500エラー(Internal Server Error)はHTTPステータスコードで、サーバー側に問題が発生したときに表示されます。画面では多くの場合Internal Server Errorと英語表記され、500の番号がブラウザの表示画面に現れないこともしばしばあります。
そのようなときはブラウザのタブ部分を見てみると500番の数字が出ていたりしますので、アクセスしたサイトがエラーになっていた際はご覧になってみてください。
いずれにしても、Internal Server Error=500Errorです。英語の意味は、内部サーバーエラーですので、文字通りサーバーで起こるエラーになります。
HTTPステータスコード
HTTPステータスコードについてのご説明ですが、私達がWebサイトにアクセスした際、ブラウザはサーバーに置かれたファイルのソース情報を視覚的に変換する手続きを行います。
ブラウザからサーバーへのリクエストに対し、処理の約束事を示すものが「Hyper Text Transfer Protocol(ハイパーテキスト・トランスファー・プロトコル)」であり、さらに、その処理に対して、サーバー側のレスポンスの状態を番号で表したものをHTTPステータスコードと言います。
HTTPステータスコードは3桁の数字で分類され、最初に登場する数字で大きく5つに分類されます。5XXと表示されるエラーについては、ざっくりとサーバーのエラーだと思ってください。
ステータス番号はいくつもありますが、今回は500番のステータスについての説明ですので、他の番号の説明は以下の記事を参考にしてください。
500エラー(Internal Server Error)の意味
500エラーの意味は、サーバー異常などの原因で、ブラウザから要求された処理をサーバーが実行できない状況にあることを示しています。
また、500エラーについては、5XX番台のエラーで「具体的な下二桁のコードが見つけられなかった場合に返される番号」になりますので、ステータスコードの見た目だけでは原因の特定ができず、様々な原因が考えられます。
つまり「サーバー側でなにかおかしなことが起きていて、具体的な理由はわからないけどブラウザの要求には応えられない状態」ということです。
この場合、Webサイトにアクセスしたユーザーには何も対処はできません。サイト管理者が原因を解消してくれるのを祈りながら、一定時間を空けてから再度アクセスしてみるしかありません。
500エラー(Internal Server Error)が引き起こす問題
500エラーが続くと、ユーザーからはWebサイトの閲覧ができない状態となります。サーバーのファイルが一切表示できない状態となりますので、実質サイトやサービスが存在していないのと同じ状況です。
検索対策の観点では、長期間放置しておくと検索インデックスから外される恐れがでてきます。インデックスから外れるということは、SEO上非常に深刻な問題です。
検索結果から外れれば当然ユーザーのアクセスも減りますので、発信しているコンテンツがユーザーに届き辛くなり、大きな機会損失になるでしょう。
また、エラーの期間が短い時間であったとしても、サイトへアクセスしたユーザーにとってはサービス提供が行われないわけですから、企業の信頼を毀損することにも繋がります。
500エラーが起こる原因
前述したように500エラーは原因の特定ができていません。エラーの内容も様々なので、迅速に原因を特定することが非常に重要です。不可抗力によるエラーの発生は諦めるしかありません。
しかし、技術的な問題によるエラーは、サイト更新時のファイルが問題になっていることが多いので、まずは更新ファイルの中から、サーバーに問題を引き起こしやすいファイルを確認してみるのが良いでしょう。
以下では500エラーを引き起こす原因を具体的に説明します。
アクセスの集中による急激なサーバーへの過負荷
アクセスの集中によるサーバーへの過負荷は非常にポピュラーなエラーの原因で、本来503のエラーが表示される状況です。
しかし、サーバーの負荷状況によってCGI(ブラウザの要求によってサーバーがプログラムを呼び出す仕組み)が実行できたりできなかったりといった場合や、PHPに不具合が生じた場合等には500エラーが返されることがあります。
複数ドメイン登録によるCGIエラー
アクセス集中によるCGIエラーと似た理由です。サーバー上の複数のドメインをひとつのアカウントで管理している場合、サーバー上のCGIは、多数のドメインに対して処理を要求されるため負荷が大きくなります。
いくつかのドメインでCGIに負荷の大きい処理をさせる場合、同一サーバー内で運用しているサイトにも影響が出てしまうことがあります。
プログラム誤記によって起こるエラー
シンプルな原因です。コードの誤記によるプログラムの処理エラーで500エラーが返される場合があります。
PHPのバージョンがサーバーと互換性がなくなってしまった場合やファイルが不足している場合等もコードの誤記と同様にエラーが返ります。
Googleクロールbot(クローラー)の過剰アクセス
検索対策を行っている場合、Googleの情報収集プログラム(クローラー)からのアクセスは歓迎されるべきものです。
しかし、クローラーが過剰にアクセスして情報収集することで500エラーが生じる場合があります。ページ数の多いサイトに起こりがちな現象で、複数のページに対して情報収集するため、クロール頻度が急激に上がり、サーバーに掛かる負荷が大きくなってエラーを起こします。
悪質なbot攻撃
Googleのクロールbotのような歓迎されるべきbotばかりではありません。検索プラットフォームではない会社が、スクレイピング(Webサイトの情報を収集する)目的で、botをクローリングさせるケースが多く存在します。
スクレイピングはサービス規約によって禁止されていたり、ルールが設けられていることも多いのですが、悪質なクロールbotのアクセスが増えるとサーバー負荷が増し、500エラーを引き起こすことがあります。
.htaccessの記述ミス
.htaccessの書き間違えは500エラーを引き起こします。よくある間違えとして、PHP.iniに書くべき記述を.htaccessに書き込んでしまう間違えがあります。
php_flagやphp_valueなどの、PHPに関する設定を.htaccessに記述してしまうために、500エラーを出すことが多いようです。
パーミッションの誤設定
ファイルを実行するための権限の設定をパーミッションと呼びます。PHPを設置しているディレクトリやCGIなど、プログラムにアクセスする権限が不足している場合、500エラーが返ってきます。
パーミッションの設定は、サーバーごとに特定のパーミッションが指定されていることもありますので、サーバー側で番号の指定がないか確認してください。
また、パーミッションの設定による表示エラーでは、プログラムへのアクセス制限で起こる500エラーの他に、特定のファイルに対して制限を設定することによって閲覧を禁止している403エラーがあります。
ディレクトリのパーミッション設定で解消する内容ではありますが、エラー番号の意味を理解し、混同しないようにしましょう。
上記してきたように、サーバー側で特定のプログラムにアクセスができない場合や、プログラムの記述に間違えがあった場合に500エラーが返ってきます。
以下では、一般的なオープンソースCMSであるワードプレスで500エラーを引き起こしやすい状況についてご説明します。
WordPressを使っている場合に500エラーが起こる原因
WordPressでエラーが起こる原因は、大きく3つです。
・WorldPress本体やプラグインのアップデートによるPHPプログラム同士の不具合
・サーバー側PHPのバージョンと、WordPressのPHPのバージョンに互換性がない
・.htaccessの書き間違え
最後の.htaccessの誤記については前述しているので割愛します。
WordPressを利用している中で、画面が真っ白になってしまったり、500エラーが返ってくることは多くの方が経験しているのではないでしょうか。
500エラーが出ていると、ブラウザからWordPressの管理画面にアクセスできなくなってしまいますので、皆さん焦った記憶をお持ちだと思います。とはいえ、WrodPressもサーバーもアップデートしなければセキュリティ上問題がありますので、なるべく最新の状態に保っておきたいものです。
こうしたアップデートのタイミングは、500エラーを引き起こしやすいので、FTPの接続が可能であることを確認し、バックアップデータを作成することを習慣化することをお薦めします。
いずれにしても、WordPressで500エラーを引き起こす原因は、更新されたプログラムによることが多いので、まずはアップデートに関わるプログラムの所在を把握し、元に戻せる状態を確保しておきましょう。
【更新プログラムがなぜ不具合を起こすのか】
・WordPressのコアファイルのソースに欠陥がある
・プラグイン同士のプログラム競合が起きている
・テーマとプラグインが競合している
・サーバーの推奨PHPバージョンで更新プログラムが構成されていない
データベースとの接続エラーによる不具合も状況としてはありえますが、WordPressの更新時におけるエラーの発生原因としては、プログラムの誤記(不備)によるエラーが多いです。
エラー原因の見つけ方と直し方
500エラーが起きる原因の多くはサーバーのリクエストに対してプログラムが不具合を起こしていることが多いと理解いただけたと思います。
以下では、上記してきたエラーの原因に対し、どのようなところからアプローチして原因を突き止め、どのように解決するかをご説明します。
サーバーの設定確認
まずはサーバーの設定を確認しましょう。サーバーログを確認することでエラーの原因を探ることができます。
接続過多によるサーバーのリソース制限
「Resource temporarily unavailable」が出ているときは、CGI/PHPの同時接続過多の状態です。一時的なサーバーのリソース制限になっている可能性があります。一時的な制限の場合、稼働中のプロセスが終了し、リソース制限が解除されればエラーも解除されます。
自動実行プログラム等によって、リソースを使っている場合は、プログラムの実行頻度を落とす等の対応を行なってください。実行頻度が落とせない場合は、サーバーを増設する等の対応が必要になります。
プログラムの記述ミスや、更新プログラムによる非互換
プログラムの書き間違えや、PHPのバージョンの非互換によるエラーは
・syntax error
・Call to undefined function ******()
・failed to open stream
などがログに書き出されます。プログラムの書き間違えによるエラーの特定は、更新を行なったプログラムから調査すると良いでしょう。
.htaccessの書き間違えによる場合
「Invalid command ‘*****’」や「Expected </IfModule> before end of configuration」といったエラーログが出ている場合、.htaccessを疑いましょう。
前述したように、本来php.iniに書かなければならない内容を.htaccessに書き込んでしまっていることがありますので、改めて記述内容を確認し、記述の間違え箇所を特定・修正を行いましょう。
パーミッション誤設定による場合
プログラムの設置してあるディレクトリのパーミッションを確認しましょう。
こちらも前述したようにサーバー固有の設定が必要な場合がありますので、サーバーの設定条件を確認し、正しいパーミッションを設定するようにしてください。
WordPressを使っている場合の500エラーの直し方
サーバーのログを確認して修正箇所の特定を行うのが本来好ましいのですが、単純に表示の復元をするだけであれば、更新前のプログラムをサーバーに設定し直してしまうのが最も簡単です。
ディレクトリの復元をした後に行なってみるべき作業は以下に書き出します。
表示が復元された場合
【プラグインの更新プログラムの実行はひとつずつにする】
更新プログラムが溜まっている場合、一度に更新を実行したくなるのですが、ひとつずつ更新を行うことでどの更新プログラムが干渉しているのかを特定できます。
更新したことによってエラーを引き起こすプラグインが合った場合、FTPを接続し、該当のプラグインが置かれたディレクトリを削除してみる(または名称を変更する)と良いでしょう。
【コアファイルの再ダウンロード】
ローカルに落としたコアファイルで更新作業を行っていた場合、ローカルのファイルが破損している場合もありますので、再度コアファイルをダウンロードし直す必要があります。
また、更新を長い期間怠ったサイトの更新を行う場合、コアファイルの更新をいきなり最新にするのではなく、インストール済で稼働できているバージョンに近いバージョンのファイルで複数回に分けて更新することを推奨します。
表示が復元されない場合
【サーバーのPHPバージョンの確認】
サーバーのPHPのバージョンがワードプレスのバージョンに互換性がないことがあります。
PHPのどのバージョンで動作可能なのかを確認する必要がありますので、サーバーのコントロールパネルで利用可能なPHPのバージョンを確認し、ワードプレスの公式サイトでサーバーの設定に適したバージョンを調べましょう。
ステージ環境を用意し、上で調べたバージョンで動作可能か検証し、PHPのバージョンを変更しながら互換性のあるバージョンを探ります。
【PHPのメモリ制限を増やす】
Wp-config.phpを編集してPHPのメモリ制限を増やします。これは、サーバーリソースに制限がかかっていることが想定される場合の処置となり、Wp-config.phpの編集については推奨されるものではありません。条件の絞り込みができている場合に試してください。
まとめ
■ 500エラーはHTTPステータスコードのひとつで、エラーを表す番号。表示される内容はブラウザやサーバーの設定で異なる。
・Internal Server Error
・500 Internal Server Error
・HTTP 500
・500 Error 等
■ 表記の仕方が異なっても、サーバー内部で起きている原因の分からない不具合で、ユーザー側からは対処のしようがなく復旧を待つしかない。
■ 長い期間エラーを放置すると、Googleクローラーからはサイトが機能していないと判断され、インデックスから外される事がある。
■ エラーの原因はプログラムの誤記・.htaccessの誤記・アクセス過多によるリソース不足・パーミッションの設定ミス等によって起きることが多い。
本記事では500エラーについて解説しました。
HTTPステータスコードを覚えておくことでエラーの原因を突き止めることにも役立ちます。サーバー内部エラーはユーザーには対処のしようがなく、ワードプレスを利用している場合管理画面に入ることもできません。
500エラーの原因を探るには、サーバーのエラーログを探ることが有効なので、迅速に改修を行い、SEOに影響が出ないように対処を行いましょう。