2026年9月17日
2026年9月17日
WordPressのAllowOverrideが設定されていない問題
はじめに
ここでは、WordPressサイトでよく遭遇する「AllowOverrideが設定されていない」問題について解説します。このエラーは通常、Apacheウェブサーバーの設定ファイルであるhttpd.confやVirtualHost設定において、.htaccessファイルに対する設定を許可していない場合に発生します。
症状・背景
このテーマが必要になる主な場面:
- .htaccessファイルへの変更が反映されない
- WordPressサイトが403 Forbiddenエラーまたは404 Not Foundエラーページを表示する
- リダイレクト設定(例: HTTPからHTTPSへのリダイレクト)が効かない
- 永続的なURLの変更ができない
手順・設定方法
ステップ1: AllowOverrideを有効にする
# WordPressディレクトリへのアクセス権限を確認します。
sudo ls -l /var/www/html/wordpress/
# .htaccessの変更が反映されるようにAllowOverrideをAllに設定します。
sudo nano /etc/apache2/sites-available/000-default.conf
# 以下のようにVirtualHostブロック内に以下の行を追加または編集します。
<Directory /var/www/html/wordpress/>
AllowOverride All
</Directory>
# Apacheの設定ファイルを保存し閉じます。
# サーバー設定を有効化してApacheを再起動します。
sudo a2enmod rewrite
sudo systemctl restart apache2
ステップ2: .htaccessに必要なコード追加
# WordPressのインストールディレクトリにある.htaccessファイルを開きます。
nano /var/www/html/wordpress/.htaccess
# 以下の内容を.htaccessファイルに追記します。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# ファイルを保存して閉じます。
ステップ3: SELinuxの設定変更(必要に応じて)
# SELinuxが有効な場合、以下のコマンドで.htaccessへのアクセス権限を確認します。
getsebool httpd_can_network_connect
# 必要であれば以下のようにSELinux設定を変更します。
setsebool -P httpd_can_network_connect 1
# サーバーの再起動を行います。
sudo systemctl restart apache2
ステップ4: 設定が反映されているか確認する
# ブラウザでWordPressサイトにアクセスし、設定が適切に行われていることを確認します。
# Apacheのエラー・ログを確認して問題がないかチェックします。
sudo tail -n 50 /var/log/apache2/error.log
注意事項
- WordPressディレクトリへの書き込み権限があるユーザーでApache設定ファイルと.htaccessファイルを編集すること。
- SELinuxが有効な場合、適切なアクセス制御リスト(ACL)やSELinuxポリシーの変更が必要になることがあります。
- AllowOverride Allはセキュリティリスクを増大させる可能性があります。必要な最小限の設定に留めましょう。
- Apacheの再起動時に既存のWebサイトが停止しないよう、適切なタイミングで行うことが重要です。
まとめ
1. AllowOverrideを確認: Apacheの設定ファイルでAllowOverride Allが設定されていることを確認します。
2. SELinuxの影響: SELinuxが有効な場合、アクセス権限やポリシーを調整する必要があります。
3. テスト: 変更後にサイトの動作を確認し、必要であればエラーログを確認して問題がないかチェックします。
4. 保守: 設定変更後の監視を行い、パフォーマンスとセキュリティを維持するために定期的な点検を行います。
関連記事: