
レンタルサーバーでは、特定のディレクトリに .htaccess ファイルを置き、アクセス制限をかける場合があります。
例えば、以下を記述した .htaccess ファイルを置くと、そのディレクトリ以下にはウェブからアクセスできないようになります。
order deny,allow
deny from all
ところが、この設定を行ったにも関わらず、このディレクトリ内の特定のファイル(画像ファイルなど)にはアクセスできてしまうことがあります。
このような状態になる1つの原因は、ウェブサーバーの設定ファイルで、例えば以下の設定が記述されていることです(もしくは、上位のディレクトリに配置された .htaccessファイルにこれが書かれていることも考えられます)。
<FilesMatch "\.(jpg|gif|png)$">
order deny,allow
allow from all
</FilesMatch>
.htaccessファイルによる設定内容は、ディレクトリの下層にまで引き継がれるため、この FilesMatch も引き継がれ、拡張子が .jpg・.gif・.png であるファイルにはアクセスができてしまうのです。
これを禁止するには、個別のディレクトリに配置する .htaccess ファイル内に、これらの拡張子を持つファイルに対するアクセス制限設定を書く(上書きする)必要があります。
<FilesMatch "\.(jpg|gif|png)$">
order deny,allow
deny from all
</FilesMatch>
レンタルサーバーの場合、ウェブサーバーの設定ファイルにどんな記述がされているかは分かりませんので、これは困った問題です。
しかし今示したように、対策はありますので、まずは「こういう問題が起きうる」ということを知ることが大切だと思います。
参考
- Apache HTTP Server Tutorial: .htaccess files – Apache HTTP Server Version 2.4
- Apache チュートリアル: .htaccess ファイル – Apache HTTP サーバ バージョン 2.4
- core – Apache HTTP Server Version 2.4
- core – Apache HTTP サーバ バージョン 2.4
- mod_access_compat – Apache HTTP Server Version 2.4
- mod_access_compat – Apache HTTP サーバ バージョン 2.4