我曾多次尝试弄清楚如何将访问者从访问者主机名重定向到其他地方。
我知道使用 IP 可以实现这个功能:
RewriteCond %{REMOTE_ADDR} ^185\.93\.180\.* [OR]
RewriteCond %{REMOTE_ADDR} ^188\.143\.232\.31
RewriteRule ^(.*)$ attacker_reroute.php
但在这种情况下,我需要通过域名来完成,有什么建议吗?
就像是
RewriteCond %{REMOTE_HOST} *\.badguys\.com
答案1
服务器REMOTE_HOST
变量保存访问站点的远程 IP 地址的解析主机名。但是,它是否包含解析的主机名取决于HostnameLookups On
在服务器配置中设置。Off
默认情况下,许多主机出于性能原因禁用此功能。此功能无法在 中启用.htaccess
。
如果HostnameLookups
未启用,则REMOTE_HOST
仅包含与相同的内容REMOTE_ADDR
,即发出请求的机器的 IP 地址。
在旁边:
小心你的正则表达式,你似乎把它当成了*
“通配符”。在正则表达式*
中量词意思是“0 个或多个前一项”。
^185\.93\.180\.*
这匹配“185.93.180。”后面跟任意数量的点。应该是^185\.93\.180
或^185\.93\.180\.
- 只需删除*
。
*\.badguys\.com
这完全无效。如果你想匹配“badguys.com”的任何子域,那么你需要正则表达式\.badguys\.com$
(基本上删除*
)。要匹配域顶点或者然后是任意子域名(^|\.)badguys\.com$
。