.htaccess でファイルへのアクセスを拒否する方法 質問する

.htaccess でファイルへのアクセスを拒否する方法 質問する

次の .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]

おすすめ記事