如何拒绝访问.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