我有一个情况,我试图拒绝访问我的网站的子目录中的所有文件。 我已经添加了一个htaccess文件到这个子目录,并添加了一个拒绝从所有指令。 不过,我也在站点根目录中有一个htaccess文件,它允许特定的文件types,看起来像这些文件types仍然可以在子目录中访问,即使我不希望它们是。 我有一个解决方法(见下文),但我觉得必须有一个更好的方法。 这里是我的两个htaccess文件:
根.htaccess
# Deny access to everything by default Order Deny,Allow deny from all # Allow access to html files <Files *.html> allow from all </Files>
子目录.htaccess
# Deny access to everything deny from all
解决方法:
如何阻止POST请求的IP,但不是GET?
将/ ch-de /中的urlredirect到/ de /并使用?redirecturl 和“
如何使用mod_rewrite来redirect和重写目录?
WAMP,Laravel 5:路由不工作 – NotFoundHttpException
子目录.htaccess
# Deny access to everything Order Allow,Deny deny from all <Files *.*> deny from all </Files>
这就是我想要的,但我觉得应该有一种方法来从所有的声明工作本身否认。 有谁知道如何?
htaccess重写规则不适用于以.cfm结尾的url
.Htaccess – 服务器错误
recursionmod_rewritesearch引擎友好的url
RewriteLog触发内部服务器错误
将Apache转换为Nginx
你可以有这样的根.htaccess
# Deny access to everything by default Order Deny,Allow deny from all # Allow access to html files <Files *.html> allow from all </Files> # Deny access to sub directory <Files subdirectory/*> deny from all </Files>
子目录中不需要单独的.htaccess。
您允许访问根目录中.htaccess中的所有html文件,并且不允许在第一种情况下在子目录中的任何地方拒绝它。 Apache不像防火墙(使用第一个规则匹配命中),解析所有的规则并使用最后的匹配规则。 全球规则是先阅读,后面是具体规则。
在Apache中的指令顺序并不明显。
您可以在“如何合并部分”文档中获得完整的描述。
这是一个摘录:
合并的顺序是:
<Directory> (正则表达式除外)和.htaccess同时完成(使用.htaccess,如果允许,覆盖<Directory> )
<DirectoryMatch> (和<Directory ~> )
同时完成<Files>和<FilesMatch>
<Location>和<LocationMatch>同时完成
<If>
所以会发生的是你的<File>指令是在 Directory号之后处理的(因为.htaccess实际上是当前目录的Directory指令)。
它在你给定的例子中工作,因为这些文件指令实际上嵌套在.htaccess目录指令中,第二个File指令应用在父目录之后。
您不能在父级中使用<FileMatch>指令,因为fileMatch只在文件名上工作,而不在文件路径上,子目录中的文件将被排除。 但是,你也许可以尝试一下LocationMatch,但是也许会以相当复杂的方式结束,也禁止带点的位置攻击。
实际上我在这里使用的解决方案是在父文件夹中的RedirectMatch:
RedirectMatch 403 ^.*.html$
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。