注意: Apache 1.3 以降の srm.conf/apache.conf には、デフォルトで
<Files .htaccess> order allow,deny deny from all </Files> <Files .htpasswd> order allow,deny deny from all </Files>
とか
<Files ~ "^\.ht"> Order allow,deny Deny from all </Files>
とかいうものが記述されていますので、1.3 以降を新規インストールするなら以下の作業を行う必要はありません。
以下の情報は Apache ML での かわと@NEC情報システムズさんの投稿 をベースにしていろいろ追加してあります。
.htaccess (というファイル名かどうかは srm.conf の AccessFileName ディレクティブで決まるのですが) を使うと、 そのディレクトリ内のファイルへのアクセス制限などができます。 たとえば、こんな感じ:
Options IncludesNoExec FollowSymLinks order deny,allow deny from all allow from 133.83
上記は、このディレクトリに関して IncludesNoExec と FollowSymLinks というオプションを指定し、 さらに 133.83.x.x ネットワークからのアクセスのみ許す、という内容です。
.htaccess ファイルの内容はセキュリティに直結していますから、 だれかに見えてほしくありません。 上記の場合は、133.83.x.x 内部の人にも見えてほしくないわけです。 ところが、.htaccess ファイルを URL に指定すると、 標準設定ではバッチリ見えてしまいます。 これは困ります。
.htaccess を見えなくするには、 .htaccess を CGI スクリプトとして認識させちゃうというテがあります。 具体的には、以下を .htaccess に追加すれば OK です。
NCSA httpd の場合:
AddType application/x-httpd-cgi .htaccess
Apache httpd の場合:
AddHandler cgi-script .htaccess
また、 Apache httpd のバージョン 1.1 以降であれば、Location ディレクティブを使って制限できます。 以下を access.conf (httpd.confでもよい) に記述して httpd を再起動しましょう。
<Location */.htaccess> deny from all </Location>
Apache httpd のバージョン 1.3 では、Location ではなく LocationMatch を使う必要があるようです。 以下を access.conf (httpd.confでもよい) に記述して httpd を再起動しましょう。
<LocationMatch "/\.htaccess"> deny from all </LocationMatch>
上記では .htaccess に関して述べましたが、 同様に .htpasswd なども必要に応じて保護しておきましょう。
いっそのこと、ドットファイル (. ではじまるファイル) 全てを不可視にしてしまうのもよいでしょう。例えばこうします:
<Files ".*"> deny from all </Files>
とか
<FilesMatch "^\..*"> deny from all </FilesMatch>
とか。前者は apache 1.2 以降、後者は apache 1.3 以降で有効です。
1999.03.01: apache 1.3 の srm.conf に関する情報、 Files ディレクティブを使ったドットファイル全体の隠蔽方法を記述した。
2000.04.05: かわとさんの記事への link を追加。 1.3.x 最新状況を追記。