微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在htaccess子目录中全部拒绝,而不是覆盖root htaccess中的文件规则

我有一个情况,我试图拒绝访问我的网站的子目录中的所有文件。 我已经添加一个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

从URL隐藏“index.PHP”并获取参数

子目录.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] 举报,一经查实,本站将立刻删除。

相关推荐