この記事では私の経験をもとに、500 Internal Server Errorが発生する原因とその対処法を解説していきます。
エラーが発生しても、決して焦らず冷静に対処しましょう。
500 Internal Server Errorが起こる原因
500 Internal Server Errorが起こる主な原因は.httacessの記述ミスです。
私自身、別で運営しているサイトのドメインをSSL化する際、FFFTPを使って.httacessに301リダイレクトのコードを追加したところ、500 Internal Server Errorが発生しました。
しかも、バックアップを取っていなかったため、回復するまでにトータルで20時間近くも要してしまいました(汗)。
私と同じことにならないよう、.httacessを編集する際はバックアップを必ず取りましょう。
対処法はこちらを参考にしてみてください。
プラグインの不具合
プラグインの相性が悪かったり、プラグインを更新した際にもエラーが起こることがあります。
特に「wp super cache」や「W3 Total Cache」などのキャッシュ系プラグインは不具合が生じやすいので、インストールする際は注意が必要です。
このブログでも、W3 Total Cacheをインストールして画面が表示されなくなったことがあります(500エラーではありませんでしたが焦りました)。
プラグインでエラーが出た際の対策としては、FTPソフトを使ってプラグインを停止させる方法が有効です。
「plugins」を適当な名前に変更すると、プラグインがすべて停止します。
正常に表示されたら、名前を元に戻しておきましょう。
管理画面にログインできる場合は、上記の方法を取る必要はありません。
メモリの容量オーバー
同じサーバーで複数のサイトを運営している方は、容量がオーバーしているかどうかを確認しておきましょう。
1つのサイトのアクセスが少なくても、サイト数が何十個もあれば容量オーバーで500 Internal Server Errorが発生する可能性は十分ありえます。
原因がわからないときはエラーログを確認
原因がわからなくては対処のしようがないので、レンタルサーバーでエラーログを確認して、500 Internal Server Errorの根源を探る必要があります。
レンタルサーバーによってはエラーログが確認できないことがありますが、エックスサーバーやさくらインターネットではエラーログの確認ができます。
エックスサーバーの場合、サーバーパネルにログインして、統計の「ログファイル」をクリック。
対象のドメインを選択して、「ダウンロード」をクリックするとエラーログがダウンロードできます。
.httacessを記述ミスした際の対処法
バックアップを取っている場合は、そのまま上書きすればOKですが、バックアップを取っていない場合は以下のコードを入力してみてください。
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
エックスサーバーを使っている方は# BEGIN WordPressの上に以下のコードを追加します。
suPHP_ConfigPath /home/サーバーID/ドメイン名/xserver_php/
AddHandler fcgid-script .php .phps
FCGIWrapper "/home/サーバーID/ドメイン名/xserver_php/php-cgi" .php
FCGIWrapper "/home/サーバーID/ドメイン名/xserver_php/php-cgi" .phps
.htaccessを編集する際、メモ帳を使うとBOMが入ってエラーが出る可能性がある(というよりエラーが出る)ので、Terapadや秀丸などのテキストエディタを使用しましょう。
Terapadを使っている場合、「表示」から「オプション」を選択
「初期文字コード」と「保存文字コード」を両方「UFT-8N」に設定します。
これで.htaccessの編集でBOMが入ることはなくなります。
まとめ
今回は500 Internal Server Errorについて解説してきましたが、用語がたくさん出てきたので、少しわかりづらかったかもしれません。
ただ、ひとつだけ言えるのは「バックアップを必ず取ろう!」ということです。
何かあってからでは遅いので、バックアップを必ず取りましょう(大事なことなので2度言いました)。