将WordPress购买的域名关联至Heroku时根域名仍跳转旧站的问题
执行通配符添加命令时出现的zsh: no matches found: *.mywebsite.com报错,是zsh终端的默认运行机制导致的:终端会优先把命令行里带*的内容匹配当前本地目录下的文件名,没有匹配项时就会直接中断执行,不会把参数传递给Heroku CLI。
修正方法很简单:给带通配符的域名字符串加上双引号,让终端把它当成普通字符串参数处理即可,正确的命令格式为:heroku domains:add "*.mywebsite.com"
你目前遇到的核心限制是WordPress托管的DNS服务不支持ALIAS/ANAME记录,无法按照Heroku文档的默认流程把根域直接解析到Heroku的DNS地址,可以根据实际需求选择以下两种可落地的方案:
方案1:不迁移域名,利用WordPress内置重定向实现跳转
你当前的根域名mywebsite.com本身依然解析在WordPress的服务器上,可以直接在WordPress的域名管理后台配置301永久重定向,把访问mywebsite.com的所有流量直接引导到已经配置好的www.mywebsite.com地址。因为www子域已经正确解析到Heroku的新站点,整个跳转链路不会经过旧站点的内容展示,用户输入不带www的地址时,会自动完成跳转抵达Heroku新站点。
- 你之前在WordPress端发起域名转移时拿到的转移码,是域名转移流程中验证注册人身份的凭证,只有需要把域名的注册权从WordPress转到其他服务商时才会用到。选择这个方案的话,转移码暂时不需要使用,也不会对现有配置产生影响。
方案2:迁移域名DNS服务,实现根域直接解析到Heroku
如果你不想让根域流量经过WordPress的服务器跳转,可以使用之前获取的转移码,把域名的注册权限迁出WordPress,切换到支持ALIAS/ANAME记录(或支持根域CNAME扁平化)的DNS服务商。迁移完成后按以下步骤配置:
- 在Heroku端执行
heroku domains:add mywebsite.com获取根域对应的专属Heroku DNS地址 - 在新的DNS服务商后台,给根域mywebsite.com配置ALIAS记录指向刚获取的Heroku地址
- 保留之前已经配置完成的www子域CNAME记录,即可实现根域直接抵达Heroku站点,无需经过WordPress跳转
避坑提醒:按照通用DNS协议规范,根域(也就是不带www的区域顶点域名)下是不允许直接配置CNAME记录的——这类记录会和同域下配置的MX(邮件服务)、NS(域名服务器)等记录产生冲突。WordPress不开放根域CNAME配置是遵循行业通用协议要求,并不是平台故意设置的使用障碍。
内容的提问来源于stack exchange,提问作者seb-2020

