概要
.htaccess に設定した通りに動作しない、そもそも読み込んでいないように見える場合の対策です。
httpだと mod_rewriteでリダイレクトするけど、 httpsだとしない、とか
ありがちな設定ミスパターンは以下基本的なことを確認して解決できます。
検証環境
そもそも .htaccess を利用するには
/etc/httpd/conf/httpd.conf 等設定ファイル内で以下の記述が必要です。
AllowOverride All
mod_rewrite を利用するには
利用頻度の多い mod_rewrite を利用するには以下が必要です。
1. mod_rewrite.so インストール
2. mod_rewrite.so をApache設定ファイルからロード
まずは上記の確認です。
1. mod_rewrite.so インストール確認
Apacheの場合、大抵modlesディレクトリ以下に格納されてます。
$ ls -al /etc/httpd/modules/mod_rewrite.so -rwxr-xr-x 1 root root 60464 10月 16 23:49 2014 /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 に設定ファイルを置いてない場合もあるので
あくまで一般的な例とします。
LoadModule rewrite_module modules/mod_rewrite.so
補足
モジュール読み込み設定は大抵、
以下のように
以下例では「/var/www/html」ディレクトリ以下では 配置した .htaccess を優先して設定されることになります。
<Directory "/var/www/html"> AllowOverride All Options -Indexes FollowSymLinks Includes ExecCGI Order allow,deny Allow from all </Directory>
万が一 mod_rewrite.soモジュールが存在しない場合は Apacheの再コンパイルが必要になります。
Apacheに mod_rewriteをインストールしリコンパイル
# cd <path to httpd source> # ./configure –enable-ssl=shared –enable-rewrite –enable-deflate –enable-headers –enable-so # make & make install # service httpd restart
以上です。