2026年5月20日
2026年5月20日
.htaccessの設定ミスによる403エラーの解決方法
はじめに
.htaccess ファイルにアクセス拒否の設定や無効な記述があると、403 Forbidden エラーが発生します。セキュリティプラグイン・バックアッププラグイン・手動編集によって意図せず追加された設定が原因となることが多いです。
.htaccessが403の原因と疑われる状況
.htaccessを手動で編集した直後に403が発生した- セキュリティプラグインをインストール・設定変更した後
.htaccessを以前のバックアップから復元した後- サーバー移転後
手順1:.htaccessを一時無効化する
FTPでルートの .htaccess をリネームします:
.htaccess → .htaccess_backup
403エラーが解消された場合、.htaccess に問題のある設定が含まれています。
手順2:.htaccessの内容を確認する
バックアップとして保存した .htaccess_backup をテキストエディタで開き、以下のような設定がないか確認します:
アクセスを全拒否している設定(問題あり)
# ❌ すべてのアクセスを拒否してしまう
Deny from all
# ❌ 特定のIPからのアクセスを拒否(自分のIPが含まれている場合)
Order deny,allow
Deny from 192.168.1.1
ディレクトリリストを無効にする設定(通常は問題なし)
# ✅ これは正常(ディレクトリの中身を表示しないだけ)
Options -Indexes
WordPressの標準的な.htaccessコード
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
この標準コードだけであれば403エラーは発生しません。標準コード以外に追加された設定を確認してください。
手順3:.htaccessを再生成する
問題のある設定を特定・削除したら、標準的な .htaccess を作成します:
管理画面から:
設定 → パーマリンク設定 → 変更を保存
FTPで直接作成:
新しい .htaccess ファイルを作成し、上記の標準コードを貼り付けて保存します。
特定のファイルへのアクセス制限を意図的に設定する場合
セキュリティ目的で特定ファイルを保護する場合の正しい書き方:
# xmlrpc.phpへのアクセスを制限する例
<Files xmlrpc.php>
Order deny,allow
Deny from all
</Files>
# wp-config.phpへのアクセスを制限する例
<Files wp-config.php>
Order deny,allow
Deny from all
</Files>
パーミッションも合わせて確認する
.htaccess のパーミッションが不適切な場合もエラーの原因になります:
.htaccess の推奨パーミッション:644
注意事項
.htaccessの変更は即時に反映されます。Apacheの再起動は不要ですが、変更後は必ず動作確認をしてください。- セキュリティプラグインが書き込んだ設定は、プラグインを無効化しても自動では削除されません。手動で確認・削除が必要です。
まとめ
.htaccessが原因の403エラーは、ファイルをリネームして無効化→内容確認→問題のある設定を削除→パーマリンク保存で再生成、という手順で解決します。
関連記事: