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

如何配置Apache .htaccess使附加域名的子域名/目录返回404

问题原因

你现有规则的核心问题是RewriteCond的逻辑组合错误:mod_rewrite默认同一规则下的多个条件为「与」关系,添加[OR]标记后会将相邻条件改为「或」关系,你把子域名拦截、主域路径拦截两类场景的条件混排后,逻辑完全偏离预期,会出现误拦截、漏拦截的情况。

正确配置方案

将原有规则替换为如下内容即可,将两类拦截逻辑拆分为独立规则,避免条件冲突:

# 开启重写引擎、主域跳转www
RewriteEngine on
RewriteCond %{HTTP_HOST} ^primary-domain\.com$ [NC]
RewriteRule ^(.*)$ https://www.primary-domain.com/$1 [R=301,L]

# 拦截两个附加域名对应子域名的所有访问
RewriteCond %{HTTP_HOST} ^(addon-domain-1|addon-domain-2)\.primary-domain\.com$ [NC]
RewriteRule ^ - [R=404,L]

# 拦截主域名(含www)下访问附加域名目录的请求
RewriteCond %{HTTP_HOST} ^(www\.)?primary-domain\.com$ [NC]
RewriteRule ^(addon-domain-1|addon-domain-2)(/|$) - [R=404,NC,L]
改动说明
  • 所有域名匹配规则增加结束符$,避免匹配到非预期的相似域名
  • 给主域301跳转规则补充L标记,命中跳转后终止后续规则执行,避免多余匹配
  • 子域名拦截独立为单条规则:只要访问的是两个附加子域,无论请求什么路径都直接返回404
  • 主域路径拦截独立为单条规则:仅当访问域名为官方主域(含www)时,才检查请求路径是否命中两个附加目录,命中则返回404
  • 路径匹配正则(addon-domain-1|addon-domain-2)(/|$)可以同时覆盖两种访问形式:不带末尾斜杠的目录根访问(如primary-domain.com/addon-domain-1)、目录下的所有子路径访问(如primary-domain.com/addon-domain-1/test.html),不会漏拦截

测试注意:301跳转存在浏览器强缓存,修改配置后请用无痕模式或者curl命令测试,避免缓存导致结果不准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 04:42:16