如何拒绝访问.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.com/inscription/log.txt 

但我上面有什么不起作用:我仍然可以从浏览器远程访问文件。

在一个htaccess文件中, <Files>指令的范围只适用于那个目录(为了避免在子目录的htaccess中的规则/指令被从父文件中取代应用程序时避免混淆)。

所以你可以有:

 <Files "log.txt"> Order Allow,Deny Deny from all </Files> 

inscription目录中的htaccess文件中。 或者你可以使用mod_rewritesorting处理这两种情况下拒绝访问htaccess文件以及log.txt:

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

强大的模式匹配 – 这是我在易腐印刷中使用的方法。 使用强大的模式匹配,这种技术阻止外部访问任何包含“ .hta ”,“. HTA ”或任何不区分大小写的组合。 为了说明,这段代码将阻止通过以下任何请求进行访问:

  • 的.htaccess
  • 的.htaccess
  • 的.htaccess
  • testFILE.htaccess
  • filename.HTACCESS
  • FILEROOT.hTaCcEsS

..等等。显然,这种方法对于保护您网站的HTAccess文件非常有效。 此外,这项技术还包括强化“ 满意 ”指令。 请注意,此代码应放置在您的域的根HTAccess文件中:

 # STRONG HTACCESS PROTECTION <Files ~ "^.*\.([Hh][Tt][Aa])"> order allow,deny deny from all satisfy all </Files> 

我不相信目前接受的答案是正确的。 例如,我在虚拟服务器(apache 2.4)的根目录中有以下.htaccess文件:

 <Files "reminder.php"> require all denied require host localhost require ip 127.0.0.1 require ip xxx.yyy.zzz.aaa </Files> 

这可以防止外部访问位于子目录中的reminder.php 。 我的Apache 2.2服务器上有一个类似的.htaccess文件,效果相同:

 <Files "reminder.php"> Order Deny,Allow Deny from all Allow from localhost Allow from 127.0.0.1 Allow from xxx.yyy.zzz.aaa </Files> 

我不知道,但我怀疑这是试图定义在.htaccess文件中的子目录, <Files ./inscription/log.txt>这是导致它失败。 将.htaccess文件放在与log.txt相同的目录下,比如在inscription目录下,它将会更简单。

将下面的行放在.htaccess文件中,并根据需要replace文件名

 RewriteRule ^(test\.php) - [F,L,NC] 

那么你可以使用<Directory>标签,例如:

 <Directory /inscription> <Files log.txt> Order allow,deny Deny from all </Files> </Directory> 

不要使用./因为如果你只是用/它看你的网站的根目录。

有关更详细的示例,请访问http://httpd.apache.org/docs/2.2/sections.html