htaccess阻止并允许来自相同域名的网站

时间:2019-06-14 01:12:34

标签: .htaccess redirect ip root

我运行了一项服务,其中我为第三方网站www.myfantasyleague.com提供css文件,脚本和图像,该网站是幻想足球的足球托管服务,最近几年,它们已经发生了一些变化。

我正在尝试阻止其欺诈性地使用我的作品的服务器上的某些网站,同时允许在同一域中购买我的作品的人们能够使用我的作品,并且该网站不会被HTA文件阻止。一旦创建了足球站点,MFL会为其提供一个永久的服务器编号和5位代码,从现在起每年都不会更改,它保持不变。这是指向MFL搜索“足球”一词的链接,您会看到有很多站点,如果单击其中的几个站点,它们都有不同的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?

我不知道还能尝试什么,我什至不知道甚至不可能。我感谢所有反馈。 谢谢

1 个答案:

答案 0 :(得分:0)

尽管您发布的模式肯定可以改善,但没有理由为什么要“阻止”来自该主机的所有引荐来源,如果这些站点根本发送了引荐来源标头……请记住该标头是可选的,并且可以轻松修改,因此任何人都可以解决根据该标头实现的限制。 另一方面,阻止IP意味着您阻止了该主机的 all 服务,据我所知,这不是您想要的。 “ www”前缀的数字后缀表示服务运营商使用分片来平衡请求负载,这是一种过时且过时的方法。您可以期望该更改随时随地发生,无论是针对单个站点还是一般而言,因此最好不要依赖于此。您只对引荐网址末尾的数字ID感兴趣。

但是,您采用的这种方法的问题是实际的重写规则:从语法上讲这是无效的。因此,我希望它会引发内部错误,从而阻止所有请求。我建议改成这样:

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

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

请注意,我并未实际测试以上代码,它可能包含一些小故障,您可能需要修复。对于此类事情,访问http服务器错误日志文件很重要。不知道您是否有这种情况...