【问题标题】:htaccess block and allow sites from the same domain namehtaccess 阻止并允许来自相同域名的站点
【发布时间】:2019-10-28 14:57:53
【问题描述】:

我运行一项服务,为第三方网站 www.myfantasyleague.com 提供 css 文件、脚本和图像,该网站是梦幻足球的足球托管服务,最近他们在过去几年中经历了一些变化。

我试图在他们的服务器上阻止某些欺诈性地使用我的作品的网站,同时允许在同一域上购买我作品的人能够使用我的作品并且它不会被 HTA 文件阻止。一旦你创建了一个足球网站,MFL 就会给它一个永久的服务器号码和 5 位数的代码,现在它每年都不会改变,它保持不变。这是 MFL 搜索单词 football 的链接,您可以看到有很多网站,如果您点击其中几个,它们都有不同的 5 位数 ID,有些有不同的服务器 ID。

我想开始屏蔽的站点是下面的这个站点 url,而 MFL 域现在可以选择使用 http 和 https,所以同时获取这两种协议是个好主意。

网站屏蔽示例

https://www67.myfantasyleague.com/2019/home/63928#0

允许示例的网站

http://www51.myfantasyleague.com/2019/home/46087#0

在 myfantasyleague 域中,他们在 url 的末尾为每个站点提供了自己的 5 位唯一代码,而且许多位于不同的服务器 ID 上,例如 www67 和 www51,您会看到这两个链接一个是 https 和一个是http。

过去我使用下面的代码,它现在仍然可以工作,但是一旦我将它添加到我的根访问文件中,它会删除两个站点,我不能拥有它,因为我希望能够如果可能的话,控制哪些网站被服务器号和 5 位数的联赛 ID 阻止。

我尝试过的代码有效,但会杀死该域名下的所有网站。

RewriteEngine On
RewriteCond %{HTTP_REFERER} https?://(www\.)?www(67).myfantasyleague.com.+(63928) [NC,OR]
RewriteRule .*\.(jpe?g|gif|bmp|png|js|css)$ [L]

也许我可以将要阻止的 URL 转换为实际 IP 并尝试阻止该 IP?

我不知道还能尝试什么,我什至可能都不知道。我感谢任何和所有的反馈。 谢谢

【问题讨论】:

    标签: .htaccess redirect ip root


    【解决方案1】:

    虽然您发布的模式当然可以改进,但没有理由“阻止”来自该主机的所有引荐来源网址,如果这些网站完全发送引荐来源网址标题...请记住这样的标头是可选的并且可以轻松修改,因此任何人都可以解决您基于该标头实施的限制。 另一方面,阻止 IP 意味着您阻止来自该主机的 所有 服务,这不是您想要的,据我所知。 “www”前缀的数字表示服务运营商使用分片来平衡请求负载,这是一种古老而过时的方法。您可以期望它随时更改,无论是针对单个站点还是总体而言,因此最好不要依赖它。您只对引用 URL 末尾的数字 ID 感兴趣。

    但是,您发布的这种方法的问题是实际的重写规则:它在语法上是无效的。所以我希望它会引发内部错误,从而阻止 all 请求。我会建议这样的东西:

    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !/63928$ [OR]
    RewriteCond %{HTTP_REFERER} !/63927$ [OR]
    RewriteCond %{HTTP_REFERER} !/63926$
    RewriteRule ^ [F,NC]
    

    这将通过提及特定站点的数字 ID 来主动将特定站点列入白名单,并通过发送“禁止”标头来阻止所有其他请求。

    请注意,我没有实际测试过上面的代码,它可能包含一些你可能需要修复的小故障。对于此类事情,访问 http 服务器错误日志文件非常重要。不确定您是否有这种情况...

    【讨论】:

    • 我尝试使用此代码进行测试,但不幸的是它阻止了我要求将其列入白名单的 5 位代码,如果它像我有超过 1000 个一样工作,这对我来说可能不是很好我不想阻止的网站,我没有办法让他们所有的 5 位数 ID 允许他们访问。对我来说,控制那些我不想允许访问的网站会容易得多,因为它是少数几个网站。谢谢
    • 然后通过从条件中删除尾随的感叹号将白名单变为黑名单。为什么事情对你来说失败是另一回事,我怀疑你遇到了内部服务器错误。您真的确定在那个环境中完全为您加载、激活和授予了重写模块吗?
    • 不是 100% 确定标头推荐,但它在过去几年中确实有效............ ......当你说删除感叹号时,请参阅代码正如我所做的那样,除非我没有完全拥有所有代码,否则当我尝试部署测试它时,它仍然会阻止来自该域的所有站点。 RewriteEngine On RewriteCond %{HTTP_REFERER} /46087$ [OR] RewriteCond %{HTTP_REFERER} !/63928$ [OR] RewriteCond %{HTTP_REFERER} !/63926$ RewriteRule ^ [F,NC]
    • 您似乎完全忽略了我关于使用重写问题的提示。所以你真的确定重写模块是可用的吗?然后你需要更深入地挖掘。 “阻止”对您来说实际上意味着什么?究竟是什么?当您尝试访问这些 URL 时,您的服务会得到什么结果?
    • 阻止意味着阻止我用 5 位数代码添加的网站从热链接到我的网站,同时允许所有其他人通过......没有人会忽视你,如果你可以发布代码那行得通,我会使用它,看看它有什么作用......在我每次添加 HTA 后访问 URL,站点加载正常,但每个站点都阻止了我域中的所有 css、png、脚本,我们只希望一个被阻止,另一个通过,因为它不在 hta 中阻止。 ..
    猜你喜欢
    • 2021-05-23
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 1970-01-01
    • 2021-12-26
    相关资源
    最近更新 更多