設定を変える前に必ずバックアップ
.htaccess
の記述ミスは
500 Internal Server Error(サイトダウン)
に直結する。編集作業の前にかならずバックアップを取ること。
バックアップ方法の例:
-
FTP クライアントで
.htaccessをローカルにダウンロードして保存 -
サーバーのファイルマネージャーで別名コピーを作成(例:
.htaccess.bak) - バックアッププラグイン(UpdraftPlus 等)でスナップショットを取得
たとえサイトが壊れても、バックアップがあれば数分で復旧できる。バックアップなしの編集は絶対に避ける。
FTP / ファイルマネージャーでのリカバリ手順
.htaccess の設定ミスでサイトが 500 エラーになった場合の緊急復旧手順。
手順
| ステップ | 操作 | ポイント |
|---|---|---|
| 1 | FTP クライアントまたはサーバーのファイルマネージャーに接続する | WordPress の管理画面にはアクセスできない状態のため、サーバーに直接接続する |
| 2 |
public_html/
(または
www/
)にある
.htaccess
をリネームする
|
.htaccess
→
_htaccess
などに変更する。削除ではなくリネームすることで後で見直せる
|
| 3 | サイトにアクセスして復旧を確認する |
サイトが表示されれば
.htaccess
が原因と確定。WordPress のパーマリンクは一時的に崩れる場合がある
|
| 4 |
リネームした
_htaccess
を開いて問題のある記述を特定する
|
一行ずつコメントアウト(
#
を先頭に追加)して原因を特定する
|
| 5 |
修正が完了したらファイルを
.htaccess
に戻す
|
拡張子なしのファイル名に注意。FTP クライアントによっては隠しファイル(
.
で始まるファイル)の表示設定が必要
|
FTP クライアントで隠しファイルを表示するには
.htaccess
は先頭が
.
の隠しファイルのため、デフォルトで非表示になる FTP クライアントがある。
| クライアント | 設定方法 |
|---|---|
| FileZilla | 「サーバー」メニュー →「隠しファイルを表示する」 |
| Cyberduck | 環境設定 →「ブラウザ」→「隠しファイルを表示する」 |
| サーバーのファイルマネージャー | 各ホスティングの管理パネルから「ファイルマネージャー」を開き、「隠しファイルを表示」オプションを有効にする |
問題のある記述の特定方法
二分探索でのデバッグ
記述量が多い場合は、コードを半分にコメントアウトして問題がどちらの半分にあるかを絞り込む方法が効率的。
# ファイル全体の半分をコメントアウトして確認
# ↓ この行から下をまとめてコメントアウト
# <IfModule mod_headers.c>
# Header always set ...
# </IfModule>
エラーログの確認
サーバーのエラーログには 500 エラーの原因が記録されている。ホスティングの管理パネルから確認できる場合がある。
よくあるエラーの例:
| エラーメッセージ | 原因 | 対処 |
|---|---|---|
Invalid command 'Header' |
mod_headers
が無効
|
<IfModule mod_headers.c>
でラップされているか確認。ホスティングに
mod_headers
の有効化を問い合わせる
|
Invalid command 'RewriteEngine' |
mod_rewrite
が無効
|
<IfModule mod_rewrite.c>
でラップされているか確認
|
Options not allowed here |
ホスティングが
Options
ディレクティブを制限している
|
Options -MultiViews -Indexes
行を削除または
#
でコメントアウト
|
AuthType not set |
Basic 認証の設定が不完全 |
AuthType
/
AuthName
/
AuthUserFile
がすべて揃っているか確認
|
Unable to open password file |
.htpasswd
のパスが間違っている
|
AuthUserFile
に指定したフルパスが正しいか確認。.htaccess Generator で生成したコードはダミーパス /path/to/your/.htpasswd のままなので、実際のパスに書き換える必要があります。
|
やってはいけないこと
| NG 行為 | 理由 |
|---|---|
バックアップなしで
.htaccess
を直接編集する
|
失敗した際に戻せなくなる |
# BEGIN WordPress
〜
# END WordPress
ブロック内を編集する
|
WordPress がパーマリンク設定の保存時に自動上書きするため、変更が消える |
| プラグインが生成したブロック(Wordfence / EWWWIO 等)を手動で編集する | プラグインが上書きするため変更が消える。またプラグインが整合性チェックで誤動作する場合がある |
| 本番環境でいきなり大量の設定を一括適用する | 問題発生時に原因の特定が困難になる。設定は少しずつ追加してテストする |
.htaccess
を完全に削除する
|
WordPress のパーマリンクが機能しなくなる。リネーム(
_htaccess
等)で無効化するに留める
|
リカバリ後の WordPress パーマリンク再設定
リカバリ手順でリネームした
.htaccess
を元に戻した後、WordPress が生成する
# BEGIN WordPress
ブロックが消えている場合はパーマリンクが機能しない。
対処手順
- WordPress 管理画面にログインする
- 「設定」→「パーマリンク」を開く
- 変更せず「変更を保存」ボタンをクリックする
-
WordPress が自動的に
# BEGIN WordPressブロックを.htaccessに書き込む
カスタムルールは
# BEGIN WordPressブロックの上(外)に記述する。ブロックの中に書くと WordPress が自動上書きし、変更が消える。