.htaccessが効かない、動かないときの対処
概要
.htaccess に設定した通りに動作しない、そもそも読み込んでいないように見える場合の対策です。
http だと mod_rewrite でリダイレクトするけど、 https だとしない、とか
ありがちな設定ミスパターンは以下基本的なことを確認して解決できます。
検証環境
- CentOS 6.6 (Final)
- Apache/2.2.15(Unix)
そもそも .htaccess を利用するには
/etc/httpd/conf/httpd.conf
等設定ファイル内で以下の記述が必要です。
1 | AllowOverride All |
mod_rewrite を利用するには
利用頻度の多い mod_rewrite を利用するには以下が必要です。
1. mod_rewrite.so インストール
2. mod_rewrite.so を Apache 設定ファイルからロード
まずは上記の確認です。
1. mod_rewrite.so インストール確認
Apache の場合、大抵 modles ディレクトリ以下に格納されてます。
1 | $ ls -al /etc/httpd/modules/mod_rewrite.so |
2. mod_rewrite.so を Apache 設定ファイルからロードされているか確認
Apache 設定ファイル/etc/httpd/conf/httpd.conf
や /etc/httpd/conf.d/*.conf
で以下を設定している。
※環境によっては /etc/httpd/conf/httpd.conf
に設定ファイルを置いてない場合もあるので
あくまで一般的な例とします。
1 | LoadModule rewrite_module modules/mod_rewrite.so |
補足
モジュール読み込み設定は大抵、
以下のように
以下例では「/var/www/html」ディレクトリ以下では 配置した .htaccess を優先して設定されることになります。
1 | <Directory "/var/www/html"> |
万が一 mod_rewrite.so モジュールが存在しない場合は Apache の再コンパイルが必要になります。
Apache に mod_rewrite をインストールしリコンパイル
- リコンパイルして Apache 再起動します。
1 | $ sudo su - |
以上です。
.htaccessが効かない、動かないときの対処
https://kenzo0107.github.io/2016/03/27/2016-03-28-htaccess_not_move/