次の .htaccess ファイルがあります:
RewriteEngine On
RewriteBase /
# Protect the htaccess file
<Files .htaccess>
Order Allow,Deny
Deny from all
</Files>
# Protect log.txt
<Files ./inscription/log.txt>
Order Allow,Deny
Deny from all
</Files>
# Disable directory browsing
Options All -Indexes
訪問者が次のファイルにアクセスすることを禁止しようとしています:
domain.example/inscription/log.txt
しかし、上記の方法は機能しません。ブラウザからリモートでファイルにアクセスできます。
ベストアンサー1
htaccess ファイル内では、ディレクティブのスコープは<Files>
そのディレクトリにのみ適用されます (サブディレクトリの htaccess 内のルール/ディレクティブが親のルール/ディレクティブに優先して適用される場合の混乱を避けるためだと思います)。
つまり、次のようになります:
<Files "log.txt">
Order Allow,Deny
Deny from all
</Files>
Apache 2.4 以降の場合は、以下を使用します。
<Files "log.txt">
Require all denied
</Files>
ディレクトリ内の htaccess ファイル内inscription
。または、mod_rewrite を使用して、htaccess ファイルと log.txt へのアクセスを拒否する両方のケースを処理することもできます。
RewriteRule /?\.htaccess$ - [F,L]
RewriteRule ^/?inscription/log\.txt$ - [F,L]