ワードプレスサイトが突然500 Internal Server Error 「アクセスしようとしたページは表示できませんでした」 と表示されサイトが表示されなくなった時HTACCESSファイルというサーバーの設定を書き込むファイルが原因となっていることがあります。
この事例と対処方法をご紹介いたします。
500 Internal Server Error とは?
500 Internal Server Errorは、サーバー上でワードプレスができているPHPプログラムが何らかの理由で、実行できなかったことを意味します。
その為、サイトの表示ができなくなり、管理画面のログイン画面も表示されなくなる場合があります。
500 Internal Server Error がHTACCESSファイルの不全によって引き起こされている事例
500 エラーの原因は様々ですが、PHPプログラムそのものにプログラムの不全がある場合や、フォルダのパーミッション(書き込みや読み込み権限)の問題を原因とする場合もありますが、ここではHTACCESSファイルの不全による500エラーについて解説いたします。
HTACCESSとは?
HTACCESSファイルは、ワードプレスがインストールされているディレクトリに、必ず一つは存在しなければならない、主にサーバー側の実行設定を書き込むファイルです。
サーバー上では.htaccessというファイル名で設置されています。
ワードプレスでは、パーマリンクと言って、ワードプレスがページのURLを生成してそのURLにアクセスするとページが表示されるようにするための設定のために主に使用されます。
(このほか、様々なプラグインでhtaccessファイルの設定が書き込まれる場合もあります)
HTACCESSファイルに問題がある事例
サイトにアクセスして、ほとんどタイムラグが無く500 Internal Server Errorがでて、かつ全頁(ログインページ)も含めて500エラーになる場合は、そもそもワードプレスの処理に入る前にエラーが出ている可能性が示唆されます。
ワードプレスが処理に入る前に実行されるのはサーバーの設定を読みこむ.htaccessファイルですのでこちらに問題がないかを調査します。
※.htaccessを調べたり修正したりするには、FTPソフトウェアによってサーバーに接続する必要がございます。
問題のあるHTACCESSファイルの事例1
BEGIN WordPress # "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は # 動的に生成され、WordPress フィルターによってのみ修正が可能です。 # これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。 <IfModule mod_rewrite.c> RewriteEngine On ...
この事例では、1行目の#が無くなっていることが問題となります。#が行頭についている行はHTACCESSでは、コメントとして解釈されサーバー設定上は無視されますが、#が消えていることによって設定として解釈されますがHTACCESSの正しい書式に従っていないため500エラーを引き起こします。
行頭の#を再度付与することによって修正されます。
問題のあるHTACCESSファイルの事例2
RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . / index.php [L] ...
この事例では、最後の行に不要な改行が入っています。HTACCESSファイルは行ごとに設定が解釈されますので、不要な改行が入っていると500エラーを引き起こします。
index.phpの前に不要な改行を削除することで修正されます。
問題のあるHTACCESSファイルの事例3
php_value post_max_size 200M
この事例のHTACCESSファイルの設定には問題がないのですが、サーバーによっては使用できない設定もございます。例としてXserverではphp_valueという処理は利用できません。
この例ではphp_valueというサーバーで使用できない設定が書き込まれているため500エラーを引き起こします。
サーバーで利用できない設定が含まれる行を削除することで修正されます。