我有以下.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
Run Code Online (Sandbox Code Playgroud)
我试图禁止访问者访问以下文件:
domain.com/inscription/log.txt
Run Code Online (Sandbox Code Playgroud)
但我上面的内容不起作用:我仍然可以远程访问浏览器中的文件.
Jon*_*Lin 176
在htaccess文件中,该<Files>指令的范围仅适用于该目录(我猜想当子目录的htaccess中的规则/指令应用于父目录中的超级指令时,应避免混淆).
所以你可以:
<Files "log.txt">
Order Allow,Deny
Deny from all
</Files>
Run Code Online (Sandbox Code Playgroud)
对于Apache 2.4+,您可以使用:
<Files "log.txt">
Require all denied
</Files>
Run Code Online (Sandbox Code Playgroud)
在inscription目录中的htaccess文件中.或者您可以使用mod_rewrite来处理两种情况,拒绝访问htaccess文件以及log.txt:
RewriteRule /?\.htaccess$ - [F,L]
RewriteRule ^/?inscription/log\.txt$ - [F,L]
Run Code Online (Sandbox Code Playgroud)
小智 15
强模式匹配 - 这是我在Perishable Press使用的方法.使用强图案匹配,这种技术防止了含有"的任何文件外部访问.HTA "," .HTA ",或它们的任何不区分大小写的组合.为了说明,此代码将阻止通过以下任何请求进行访问:
..等等.显然,这种方法可以非常有效地保护您网站的HTAccess文件.此外,该技术还包括强化" 满足所有 "指令.请注意,此代码应放在域的根HTAccess文件中:
# STRONG HTACCESS PROTECTION
<Files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</Files>
Run Code Online (Sandbox Code Playgroud)
Nik*_*Dow 12
我不相信目前接受的答案是正确的.例如,我.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>
Run Code Online (Sandbox Code Playgroud)
这可以防止对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>
Run Code Online (Sandbox Code Playgroud)
我不确定,但我怀疑这是尝试在.htaccess文件中专门定义子目录,即 <Files ./inscription/log.txt>导致它失败的子目录.这将是简单的把.htaccess文件在同一目录log.txt中,即inscription目录中,它会在那里工作.
| 归档时间: |
|
| 查看次数: |
180559 次 |
| 最近记录: |