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

根目录与站点目录htaccess规则冲突导致不带www域名无法访问如何解决

规则运行逻辑与生效优先级

Apache的.htaccess规则按照目录从上到下的顺序执行,服务器根目录的规则优先级高于站点子目录的规则,所以cPanel生成的根目录规则会先运行,再执行你写在站点目录的规则。
你遇到的冲突运行流程如下:

  1. 用户访问mydomain.com,首先匹配根目录cPanel规则:满足HTTP_HOST为mydomain.com的条件,临时把请求指向https://www.mydomain.io/mydomain(也就是你这个站点对应的子目录托管路径)
  2. 请求流转到站点子目录后,匹配你写的强制www规则:当前HTTP_HOST还是不带www的mydomain.com,触发跳转逻辑,拼接路径时错误把托管路径也拼入了新域名后缀,最终生成https://www.example.com/example.com/的异常地址。

配置错误点

  • 没有考虑父目录规则的优先级影响,你写的跳转规则没有限定专属域名,路径拼接逻辑没有适配cPanel附加域的转发规则
  • 跳转规则默认使用HTTP协议,如果你的站点已经开启HTTPS强制,会额外触发一次跳转,也可能和全局HTTPS规则冲突
  • 301是永久重定向,浏览器会长期缓存旧的跳转结果,配置修改后如果不清理缓存会持续复现错误

标注do not edit的规则是否可删除

不建议直接删除这段规则。这段是cPanel添加的附加域转发规则,用来把你绑定的mydomain.com请求转发到对应的子站点目录,如果你直接删除,后续cPanel更新配置时会自动重新生成,同时删除后mydomain.com的请求会直接走到服务器主站点的内容,无法正常加载你的站点。
如果要调整根目录跳转的目标路径,直接到cPanel后台「附加域」板块找到对应域名修改托管目录即可,不需要手动修改根目录.htaccess。

修复方案

把站点子目录的.htaccess跳转规则替换为以下内容,避免路径拼接错误:

RewriteEngine on
# 仅匹配你的根域名,防止影响其他绑定域名
RewriteCond %{HTTP_HOST} ^mydomain\.com$ [NC]
# 直接跳转到带www的HTTPS地址,规避路径拼接问题
RewriteRule ^(.*)$ https://www.mydomain.com/$1 [R=301,L]

修改完成后清理浏览器缓存或者用无痕模式测试即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:54:04