1. ホーム
  2. .htaccess

[解決済み] .htaccessでファイルへのアクセスを拒否する方法

2022-06-28 10:21:58

質問

私は以下の.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.com/inscription/log.txt

を追加しましたが、上記のものは動作しません。私はまだブラウザからリモートでファイルにアクセスすることができます。

どのように解決するのですか?

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 ディレクトリにある htaccess ファイルに記述します。または、mod_rewrite を使って、htaccess ファイルと log.txt へのアクセスを拒否する両方のケースを処理するようにすることも可能です。

RewriteRule /?\.htaccess$ - [F,L]

RewriteRule ^/?inscription/log\.txt$ - [F,L]