自从我需要破解.htaccess文件以来已经很久了......
40x阻止访问整个网站的特定文件扩展名的最简单方法是什么?
答案 0 :(得分:23)
<FilesMatch "\.(htaccess|htpasswd|ini|log|sh|inc|bak)$">
Order Allow,Deny
Deny from all
</FilesMatch>
加载了一些常用扩展程序,可根据需要添加更多扩展程序。
答案 1 :(得分:12)
如果你真的想要404(而不是403),你可以使用mod_rewrite:
RewriteEngine on
RewriteRule \.ext$ - [R=404]
答案 2 :(得分:4)
<FilesMatch "\.ext$">
Deny from all
</FilesMatch>
请参阅FilesMatch和Deny
上的Apache文档编辑:Artefacto会生成good point,如果这对您的目的非常重要,则会返回403,而非404;
答案 3 :(得分:2)
您还可以使用RedirectMatch
指令拒绝访问文件扩展名:
RedirectMatch 403 ^/.+\.(php|html|gif)$
如果客户请求任何以.php
或.html
或.gif
结尾的uri,则会为客户返回403禁止错误。您可以使用条形|
为模式添加更多扩展。
答案 4 :(得分:0)
我喜欢@Chris Lawlor和@ starkeen的答案,因为OP询问“40x”我会建议重定向到404错误,因为它不会泄露文件存在的事实。
这是我目前在我的一个项目中使用的内容:
# Hide files not concerning the user
RedirectMatch 404 \.(htaccess|htpasswd|ini|log|sh|inc|bak|bkp|sql)$
答案 5 :(得分:0)
@Dário对文件类型有正确的想法,它也可以用于特定的文件和目录。唯一缺少的是管理区分大小写。
我遇到了this article that gives some detail about case-sensitive RedirectMatch
,还建议对字符大小写不敏感。
在重定向大多数请求时,无论如何都是小写。或者,您可以使用
RewriteRule
来确定不区分大小写。但是在某些情况下,很高兴知道您也可以通过将RedirectMatch
添加到规则中来使用(?i)
滚动。
RedirectMatch 403 /\$\&
RedirectMatch 403 (?i)/\.(bash|git|hg|log|svn|swp|tar)
RedirectMatch 403 (?i)/(1|contact|i|index1|iprober|phpinfo|phpspy|product|signup|t|test|timthumb|tz|visit|webshell|wp-signup).php
RedirectMatch 403 (?i)/(author-panel|class|database|manage|phpMyAdmin|register|submit-articles|system|usage|webmaster)/?$
RedirectMatch 403 (?i)/(=|_mm|cgi|cvs|dbscripts|jsp|rnd|userfiles)