Apache2サーバー(バージョン2.2.22)を構成して、WWWルートフォルダーとそのサブディレクトリの自動インデックス作成を許可するが、アクセスを特定のファイルタイプのセット(つまり、)のみに制限する必要があります。 txtおよび.log)。つまり、誰でもどのファイルが存在するかを確認できますが、ダウンロードできるのは特定のファイルタイプのみです。
ダウンロードを指定されたファイルタイプのみに制限する次のことを思いつきましたが、ディレクトリインデックスのすべてのURLは403Forbiddenを返します。
<Directory /var/www/>
Options Indexes FollowSymLinks
SetOutputFilter DEFLATE
AllowOverride None
Order allow,deny
<FilesMatch "">
Order deny,allow
allow from all
</FilesMatch>
<FilesMatch ".+\.(?!(txt|log)$)[^\.]+?$">
Order allow,deny
deny from all
</FilesMatch>
</Directory>
インデックスファイルも許可する必要があります。
_<FilesMatch "^index\.">
Order allow,deny
allow from all
</FilesMatch>
_
apacheはそれらを検索しますが(_index.html
_、_index.cgi
_、...など)、すべて禁止されているためです。理由はわかりませんが、Apacheはこれらのファイルの存在を確認することすらできず、403を送信すると思います。Apacheがこれらのインデックスファイルの存在を確認できない場合、ディレクトリインデックスを作成します。これには、_<FilesMatch "">
_ディレクティブ、インデックスファイル名は ""です。
次のようないくつかの行のエラーログファイルに情報があります。
_client denied by server configuration: /var/www/index.html
_
また、禁止されているファイルも一覧表示する必要があるため、次を追加する必要があります。
_IndexOptions ShowForbidden
_
たとえば、_Options Indexes FollowSymLinks
_の後。ディレクトリインデックスには、 Apache doc にあるオプションがたくさんあります。
お役に立てれば。
FilesMatch
は、DirectoryIndex
ディレクティブと空の文字列から可能なすべてのエントリをヒットする必要があります。あなたがこれを持っている場合:
_DirectoryIndex index.html index.html.var index.php
_
次に、これはあなたの試合です:
<Files ~ ^index\.(html|php|html.var)$|^$>
DirectoryIndex
を設定してから、以下を照合するのが最も簡単な場合があります。
_DirectoryIndex index.html
<Files ~ ^index\.html$|^$>
<Limit GET HEAD>
Order Allow,Deny
Allow from all
</Limit>
</Files>
_