2010-05-18 89 views

回答

21
<FilesMatch "\.(htaccess|htpasswd|ini|log|sh|inc|bak)$"> 
Order Allow,Deny 
Deny from all 
</FilesMatch> 

加载有一些常见的扩展,可以根据需要添加更多。

4
<FilesMatch "\.ext$"> 
    Deny from all 
</FilesMatch> 

查看FilesMatchDeny

编辑 Apache文档:Artefacto使得good point,这将返回403,而不是404,如果你的目的是很重要的

11

如果你真的想要一个404(而不是403),你可以使用mod_rewrite:

RewriteEngine on 
RewriteRule \.ext$ - [R=404] 
+0

对不起 - 403是我应该用什么。我编辑的问题说40x。 – Stevko 2010-05-18 19:36:30

+0

请注意,当禁止访问资源时,RFC 2616允许404响应(请参阅第10.4.4节)。所以你原来的问题是有效的。 – Artefacto 2010-05-18 20:08:29

+2

还有'Redirect 404',ref:[请求.htaccess应该返回404而不是403](http://stackoverflow.com/a/7945851/367456)和'RedirectMatch 404',ref:[Make .git目录web无法访问](http://stackoverflow.com/a/17916515/367456) - 在这里聚集一点。 – hakre 2014-01-23 09:18:14

2

您也可以拒绝访问使用RedirectMatch指令文件扩展名:

RedirectMatch 403 ^/.+\.(php|html|gif)$ 

这将如果客户请求以.php.html.gif结尾的任何URI,则返回403禁止错误。您可以使用栏|向模式添加更多扩展名。

0

我喜欢@Chris Lawlor's和@ starkeen的答案,并且由于OP询问“40x”,我会建议重定向到404错误,因为它不会放弃文件存在的事实。

这是我目前使用在我的项目之一:

# Hide files not concerning the user 
RedirectMatch 404 \.(htaccess|htpasswd|ini|log|sh|inc|bak|bkp|sql)$ 
相关问题