【问题标题】:Combine multiple FilesMatch rules in htaccess在 htaccess 中组合多个 FilesMatch 规则
【发布时间】:2017-01-23 21:47:22
【问题描述】:

我想完全拒绝某些 IP 访问我的网站。 此外,我想仅拒绝某些其他 IP 访问某个文件。 问题是,第二条规则似乎覆盖了第一条。

<FilesMatch "">
order allow,deny
allow from all
deny from 1.1.1.1
</FilesMatch>

<FilesMatch "^file\.exe$">
order allow,deny
allow from all
deny from 2.2.2.2
</FilesMatch>

在这个精简的示例中,1.1.1.1 将有权访问 file.exe,尽管它实际上已被第一条规则阻止。

预期结果:1.1.1.1 无法访问任何内容(包括 file.exe),2.2.2.2 可以访问网站但无法访问 file.exe。

我做错了什么?

【问题讨论】:

    标签: apache .htaccess


    【解决方案1】:

    deny from 1.1.1.1 添加到第二个。正如你所说,第二个块中的allow from all 覆盖了file.exe 的第一个块。还要删除第一个空文件匹配,它没有做任何事情。

    order allow,deny
    allow from all
    deny from 1.1.1.1
    
    <FilesMatch "^file\.exe$">
    order allow,deny
    allow from all
    deny from 1.1.1.1
    deny from 2.2.2.2
    </FilesMatch>
    

    或者对于更简单的方法,你可以试试这个:

    order allow,deny
    allow from all
    deny from 1.1.1.1
    
    <FilesMatch "^file\.exe$">
    deny from 2.2.2.2
    </FilesMatch>
    

    请告诉我你的进展情况。

    【讨论】:

    • 嗯,我也有这个想法,但 1.1.1.1 只是一个简短的例子。实际上,有一个大约 20 行 + cmets 的动态列表。我绝对不想在这里创建需要保持同步的冗余。您的第二个示例也可能缺少您建议的行。除了忽略 FilesMatch 范围之外,似乎以某种方式干扰了 htaccess 文件的其余部分。我得到 ERR_TOO_MANY_REDIRECTS 而不是 403。但这只是一个侧面节点,指出空的 FilesMatch 确实有意义。
    • 重定向问题是由ErrorDocument 403 / 引起的-出于测试目的,我已将其删除,如果我能得到您的建议,我会为此找到另一个解决方案。您的第二个建议的问题是它似乎隐式覆盖了允许语句,因此可以从 1.1.1.1 访问 file.exe - 您可以将其替换为 127.0.0.1 或 ::1 以便您自己在本地轻松尝试,如果您喜欢。
    猜你喜欢
    • 1970-01-01
    • 2021-11-29
    • 2016-09-16
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    相关资源
    最近更新 更多