WebサーバでApacheを使っているとき、「.htaccess」ファイルが有効かどうかを確認する方法を調べてみました。
ApacheなどのWebサーバで使用できる、Webサーバの動作をディレクトリ単位で制御するためのファイル。
具体的には、CGIやSSIなどを実行するための宣言(命令)や、拡張子ごとにファイルタイプを指定するMIMEタイプの設定、ユーザ認証、IPアドレスやドメイン単位でのアクセス制限などを書き込むことができる。
.htaccessファイルで設定した内容は、.htaccessファイルがあるディレクトリとそのサブディレクトリに効果があり、効果があるディレクトリに入っているファイルすべてに影響をおよぼす。
また、サブディレクトリにも.htaccessファイルを別に置くこともでき、この場合は両方のファイルの効果が発生する(矛盾するときはサブディレクトリの設定を優先)。
Webサーバの設定ファイル(httpd.conf)を使用すると.htaccessファイルで設定できる内容を制限できるため、Apacheなどが動作しているサーバでも.htaccessを使用できなかったり、一部の機能しか使用できなかったりすることもある。
問題の切り分けを行うために、.htaccessが有効な場合に動作するはずの設定をして、その結果を検証してみる。
http://www.apache.jp/pipermail/apache-users/2006-July/006276.html
確認方法としては、適当に Redirect を使用されては如何でしょう。
All ですから、基本的に何でも通るはずですので、
> .htaccessにより設定の上書きを許可するために
> AllowOverride All
> を設定しているのですが、設定が正しく動作しているか確認する
> コマンド、方法は無いでしょうか?
該当するディレクトリの .htaccess に(たとえば /ex とすると)
Redirect /ex/ http://www.google.com
このような記述をすると、たとえば http://hoehoe.jp/ex/ へのア
クセスが http://www.google.com/ にリダイレクトされる=.htaccess
が有効になっている、と確認できます。
http://htaccess.me/study/06_check.html
.htaccessの練習として、「ディレクトリ内を表示させない/見せる」という設定を取り上げている、ということです。
すぐに実験してみたい方は、こちら。
ディレクトリ内の一覧を表示させない設定
ディレクトリ内の一覧を表示させる設定
http://questionbox.jp.msn.com/qa2182567.html
第一段階: .htaccessの有効確認
.htaccess に test と記述します
これでアクセスすると
・1-A:Internal Server Errorとなりerror_logに"/.htaccess: Invalid command 'test'"と記録される
=>.htaccessは有効です
・1-B:何も変化無し
=>.htaccessが無効です
<VirtualHost *:80> ServerName subdomain.mydomain.com DocumentRoot /var/www/subdomain.mydomain.com ServerAdmin webmaster@mydomain.com ErrorLog logs/subdomain_error_log TransferLog logs/subdomain_access_log <Directory /var/www/subdomain.mydomain.com> AllowOverride All </Directory> </VirtualHost>