Ghost CMS导航跳转至非自定义域名问题排查
我之前在Azure App Service上部署Ghost时也碰到过类似的情况——哪怕后台显示域名正确、websiteUrl配置也没问题,导航链接还是会跳转到默认的azurewebsites.net。给你梳理几个最可能的原因和解决办法:
Ghost内部缓存没清理
Ghost会缓存路由和永久链接结构来提升性能,哪怕你更新了websiteUrl并重启了服务,旧的缓存值可能还卡在里面。试试清理Ghost的内部缓存:- 进入Ghost后台 → 设置 → 实验室
- 点击清理缓存(一般在“高级”板块下面)
- 等一分钟后刷新前端页面,再检查导航链接
Azure部署槽或预热机制的问题
如果你用了部署槽,要确保所有槽的websiteUrl配置都是一致的。有时候槽交换时,预热过程可能会加载旧的配置值。另外检查下你的App Service有没有自定义预热脚本——如果初始化时拉取了旧的站点数据,也会导致链接过期。config.production.json覆盖了App Service的配置
哪怕你在App Service应用设置里配置了websiteUrl,如果部署的Ghost实例里config.production.json文件有硬编码的域名,它会优先生效。SSH到你的App Service,查看/home/site/wwwroot/config.production.json文件——确保url字段是https://msclouddeveloper.com,而不是azurewebsites.net的域名。如果不对,更新后再重启App Service。CDN或反向代理的缓存(如果有使用)
如果你在App Service前面加了Azure CDN或者其他反向代理,它可能还在缓存旧的HTML页面,里面带着旧域名。完全清理CDN缓存,同时确保代理设置正确传递了主机头给Ghost(这样Ghost才知道是通过自定义域名访问的)。主题里硬编码了链接
仔细检查你的Ghost主题模板。有些主题可能没有用Ghost内置的辅助函数(比如{{url}}或{{navigation}}),而是硬编码了导航链接。看看主题的navigation.hbs或header.hbs文件——如果里面直接写了azurewebsites.net的地址,替换成能读取站点配置URL的辅助函数就行。
内容的提问来源于stack exchange,提问作者JurgenW

