.htaccessを編集したあとに、突然サイトが「500 Internal Server Error」になってしまうことがあります。トップページも管理画面も見えなくなり、初めてだとかなり焦りやすいトラブルです。
ただし、.htaccessによる500エラーは、原因がある程度決まっていることも多く、落ち着いて確認すれば切り分けしやすい場合があります。このページでは、初心者向けに、よくある原因と対処の流れを分かりやすく紹介します。
この記事で分かること
500 Internal Server Error は、サーバー側で正常に処理を続けられなかったときに表示されるエラーです。.htaccessの記述ミスでも発生することがあり、設定を保存した直後からサイト全体が表示されなくなることがあります。
とくにApache系サーバーでは、.htaccessの書き方に問題があると、そのディレクトリ配下の表示に大きく影響することがあります。
よくある状況
設定を1行追加した直後に500エラーになる、または特定のページだけでなくサイト全体が表示されなくなる、といった形で気づくことが多いです。
.htaccessで500エラーが起きる原因はいくつかありますが、初心者の方がよく当たりやすいのは次のようなものです。
| 原因 | 内容 | 起こりやすい例 |
|---|---|---|
| 記述ミス | 命令の書き方が正しくない | スペル違い、記号不足、余計な文字 |
| 使えない命令 | サーバー環境で許可されていない | Header、Options、RewriteEngine など |
| 全角文字や余計な空白 | 見た目では分かりにくい崩れ | 全角スペース、全角記号の混入 |
| 条件の書き方ミス | 構文は近いが書式が誤っている | Require、RewriteCond、Files の閉じ忘れ |
| 文字コードや改行の問題 | 環境によって正しく読めないことがある | 特殊な保存形式での編集 |
500エラーが出たら、最初にやることは「直前に変更した .htaccess を元へ戻す」ことです。編集前のバックアップがあれば、それに戻すのが最も早いです。
原因調査よりも先に、まず表示を戻すことを優先すると安心です。とくに公開中のサイトでは、長時間エラー状態を放置しないことが大切です。
.htaccessの編集前には、元ファイルを必ず保存しておくと復旧が早くなります。
追加した設定が複数ある場合は、まとめて直そうとせず、1行ずつ切り分けるのが基本です。一度にたくさん触ると、どこが原因か分かりにくくなります。
たとえば、新しく追加したブロックを一度まるごと外し、表示が戻るかを確認します。戻ったら、その中の1行ずつを再確認していく流れが分かりやすいです。
原因が分からないまま何行も書き足すと、さらに状況が複雑になりやすいです。
見た目はそれほど違わなくても、少しの違いで500エラーになることがあります。
例:閉じタグの書き忘れ <Files ".htaccess"> Require all denied 上のように </Files> が抜けるとエラーの原因になることがあります。
例:命令名の打ち間違い RewriteEngin On 正しくは RewriteEngine On です。
このように、スペル違いや閉じ忘れはかなりよくある原因です。
日本語入力のまま編集していると、半角で書くべき記号やスペースが全角になってしまうことがあります。見た目では分かりにくいため、気づきにくい原因のひとつです。
とくに引用符、スペース、記号類は注意して見直します。コピーしたコードをそのまま貼り付けた場合も、余計な文字が入っていないか確認すると安心です。
.htaccessで使われる命令の中には、サーバー設定によって利用できないものがあります。その場合、書き方自体は合っていても500エラーになることがあります。
たとえば、Header系、Options系、Rewrite系などは、環境によって動作条件が異なることがあります。
考え方
コード例どおりに書いても動かない場合は、「書き方が絶対に間違っている」と決めつけるのではなく、「この命令がその環境で使えるか」を疑うことも大切です。
サーバーのエラーログを確認できる環境なら、.htaccessに関するヒントが記録されていることがあります。たとえば、無効な命令、構文エラー、許可されていない設定などです。
ログが見られる場合は、修正の方向がかなり分かりやすくなります。ただし、レンタルサーバーではログの見え方が制限されている場合もあります。
迷ったときは、次の順番で確認すると進めやすいです。
この流れなら、原因を広げずに追いやすくなります。
焦って何度も書き換えると、元の正常状態に戻しにくくなることがあります。
編集前のファイルを残していないと、復旧に時間がかかりやすくなります。
500エラーを防ぐには、最初から大きな設定を一度に入れないことが大切です。新しい設定は少しずつ追加し、そのたびに表示確認を行うと安全です。
また、よく使う設定でも、サーバー環境との相性があります。別サイトのコードをそのまま流用するのではなく、自分の環境で通るかを確認しながら進めることが大切です。
変更は1か所ずつ、確認も1回ずつ進めると、トラブル時に原因を追いやすくなります。
.htaccessで500 Internal Server Errorが出たときは、まず直前の変更を疑い、元へ戻して表示を復旧させることが大切です。そのうえで、追加した設定を1行ずつ切り分けていくと原因を見つけやすくなります。
よくある原因は、スペルミス、閉じ忘れ、全角文字、使えない命令などです。焦らず、少しずつ確認することが、もっとも確実な対処につながります。