.htaccess 根据访问者主机名而不是 IP 地址进行重定向

.htaccess 根据访问者主机名而不是 IP 地址进行重定向

我曾多次尝试弄清楚如何将访问者从访问者主机名重定向到其他地方。

我知道使用 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$

相关内容