2016-11-16 54 views
1

我正在使用ReWrite规则来控制访问该网站,当使用一个IP地址我的结构工作正常..但有一个特定的提供者使用许多不同的IP范围这些都与他们的域名“abc123.com”相反,我将如何在我的重写中表达他们的所有范围,例如:* .abc123.com?以下是我使用什么IP的:htaccess ReWriteCond反向查找* .abc123.com格式

RewriteCond %{REMOTE_ADDR} ^123\.456\.789\.012 
RewriteRule^- [R=403,L] 

,我想这样做:

RewriteCond %{REMOTE_ADDR} ^*.abc123.com 
RewriteRule^- [R=403,L] 

回答

0

我将如何表达其所有范围,例如:* .abc123.com在我的 重写中?

您可以使用几种方法并尝试执行此操作。这将使用引荐来源,如果它不符合您的主机,它将拒绝访问。

RewriteCond expr "! %{HTTP_REFERER} -strmatch '*://%{HTTP_HOST}/*'" 
RewriteRule^- [F] 

或者您可以使用远程主机。

RewriteCond %{REMOTE_HOST} \.abc123\.com$ [NC] 
RewriteRule^- [F] 
0

如果你的DNS查找在你的Apache /虚拟主机配置使用此开启指令:

HostnameLookups On 

那么你可以使用REMOTE_HOST变量远程主机名:

RewriteCond %{REMOTE_HOST} \.abc123\.com$ [NC] 
RewriteRule^- [F] 
+1

我想我需要输入更快。 –

+0

AHA类似的答案:)但你有一个额外的'HTTP_REFERER'选项以及 – anubhava

+1

大声笑,这两种优秀的方法。谢谢anubhava&panama Jack ...我测试了远程主机选项,它的运行非常好。希望Stacks允许我选择两个答案,因为你们两个都是正确的,但由于它只有一个,巴拿马需要它比anubhava多一点,所以我会接受这个答案..但是非常感谢你们两个! –