132

我有以下 .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

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

4

5 回答 5

223

在 htaccess 文件中,<Files>指令的范围仅适用于该目录(我想是为了避免在子目录的 htaccess 中的规则/指令从父级应用取代规则/指令时产生混淆)。

所以你可以拥有:

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

对于 Apache 2.4+,您可以使用:

<Files "log.txt">  
  Require all denied
</Files>

在您inscription目录中的 htaccess 文件中。或者您可以使用 mod_rewrite 来处理这两种情况,拒绝访问 htaccess 文件以及 log.txt:

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

RewriteRule ^/?inscription/log\.txt$ - [F,L]
于 2012-07-30T21:18:18.500 回答
19

强模式匹配——这是我在 Perishable Press 使用的方法。使用强模式匹配,此技术可防止外部访问任何包含“<strong>.hta”、“<strong>.HTA”或其任何不区分大小写的组合的文件。为了说明,此代码将阻止通过以下任何请求进行访问:

  • .htaccess
  • .HTACCESS
  • .hTaCcEsS
  • testFILE.htaccess
  • 文件名.HTACCESS
  • FILEROOT.hTaCcEsS

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

# STRONG HTACCESS PROTECTION
<Files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</Files>
于 2014-03-07T13:38:32.067 回答
15

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

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

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

<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它会在那里工作。

于 2015-04-09T21:12:26.980 回答
3

将以下行放在您的 .htaccess 文件中,并根据需要替换文件名

RewriteRule ^(test\.php) - [F,L,NC]
于 2016-09-20T09:21:16.977 回答
-4

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

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

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

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

于 2017-01-24T02:51:23.357 回答