You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用.htaccess结合gethostbyname()重定向特定域名服务器流量?

特定域名来源流量的.htaccess重定向/封禁方案

问题根源

  • 直接用deny封禁IP导致自身出现403,大概率是对方域名和你的域名解析到同一服务器IP,封禁IP会连带拦截自己的请求
  • 基于Referer的规则不可靠:请求可以不带Referer,或者被伪造,容易误封正常访问
  • 基于HTTP_HOST的规则针对的是用户访问时输入的域名,而非发起请求的服务器域名,对重定向过来的流量无效

有效解决方案:通过反向DNS匹配来源服务器域名

Apache的%{REMOTE_HOST}变量可获取客户端IP对应的反向DNS主机名,利用这个能精准匹配来自特定域名服务器的流量。

完整.htaccess代码(重定向到你的域名)

RewriteEngine On

# 匹配来源主机名是baddomain.com或其子域名的请求
RewriteCond %{REMOTE_HOST} ^(.*\.)?baddomain\.com$ [NC]
# 永久重定向到你的目标域名,请替换成实际域名
RewriteRule ^(.*)$ https://yourdomain.com/$1 [L,R=301]

封禁替代方案(无需重定向,直接拦截)

将上述代码中的RewriteRule替换为:

RewriteRule .* - [F,L]

关键注意事项

  1. 开启反向DNS:确保服务器的Apache配置中HostnameLookups设置为On或Double(多数主机商默认开启,若无效可联系主机服务商确认)
  2. 精准匹配调整:若只需匹配主域名baddomain.com,去掉规则中的(.*\.)?,改为^baddomain\.com$
  3. IP批量匹配方案(反向DNS不可用)
    如果无法开启反向DNS,先通过nslookup baddomain.com或dig baddomain.com获取对方所有IP,再批量匹配:
RewriteEngine On

# 替换为实际查询到的baddomain.com的IP列表
RewriteCond %{REMOTE_ADDR} ^1\.2\.3\.4$ [OR]
RewriteCond %{REMOTE_ADDR} ^5\.6\.7\.8$
RewriteRule ^(.*)$ https://yourdomain.com/$1 [L,R=301]

内容的提问来源于stack exchange,提问作者user22294749

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 05:39:56