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

Ruby on Rails Heroku应用HTTP域名无法重定向至HTTPS域名

问题根因

你之前配置Google Domains转发后站点直接无法访问,核心原因是Heroku的自定义域名接入完全不依赖域名注册商的转发服务——开启转发会直接覆盖原本指向Heroku节点的DNS解析记录,把流量导到Google的转发服务器,和Heroku侧配置的SSL证书、路由规则完全不匹配,自然全站无法访问。

正确配置步骤

第一步:清理错误配置,在Heroku侧绑定自定义域名

  • 先登录Google Domains后台,删掉之前配置的所有HTTP/HTTPS域名转发规则,清空错误的解析记录
  • 登录Heroku控制台,进入目标应用,打开Settings > Domains板块,分别添加两个自定义域名:myapp.com和www.myapp.com
  • 添加完成后,Heroku会给每个域名分配一个对应的*.herokudns.com格式的目标解析地址,把这两个地址记下来,后面配DNS要用
    注意:不要直接把域名解析到your-app-name.herokuapp.com这个默认地址,Heroku不支持自定义域名直接指向这个默认地址,会触发SSL不匹配错误

第二步:配置Google Domains DNS解析

回到Google Domains的DNS解析配置页,添加两条解析记录:

  • 根域名myapp.com:选择ALIAS/ANAME记录类型,记录值填刚才Heroku给根域名分配的herokudns.com地址
  • www子域名www.myapp.com:选择CNAME记录类型,记录值填刚才Heroku给www域名分配的herokudns.com地址
  • TTL保持默认的3600秒即可,不要加任何额外的跳转、转发规则,等待解析生效(全球生效时间一般在10分钟到1小时不等)

第三步:Heroku侧配置SSL证书

  • 在Heroku应用的Settings > SSL Certificates板块,选择自动配置Let's Encrypt免费证书,Heroku会自动完成域名所有权校验、证书签发和部署,等证书状态显示为“Active”即可
  • 这一步不需要手动上传证书,也不需要额外付费购买SSL证书

第四步:Rails侧开启强制HTTPS跳转

这一步是实现HTTP自动跳转HTTPS的核心,完全不需要依赖域名商的转发功能:

  • 打开本地Rails项目的config/environments/production.rb文件,找到SSL相关配置项,修改为:
# 强制所有生产环境请求走HTTPS
config.force_ssl = true
  • 保存修改后提交代码,直接推送到Heroku完成部署:
git add config/environments/production.rb
git commit -m "Enable force SSL in production"
git push heroku main
验证方法

部署完成后等待2-3分钟让配置生效,用浏览器无痕窗口访问http://www.myapp.com,正常情况下会自动返回301永久重定向到https://www.myapp.com,页面正常加载且地址栏显示安全锁标识,没有证书报错。如果还是访问异常,先检查本地DNS缓存是否刷新,不要用之前访问过错误配置的普通浏览器窗口测试。

避坑提醒:不要用任何域名注册商提供的转发服务实现HTTP到HTTPS的跳转,这类服务会篡改DNS解析路径,不仅容易导致站点无法访问,还会让你的站点流量经过第三方中转服务器,存在数据泄露风险。Rails框架原生的强制SSL配置已经可以稳定实现跳转需求,同时会自动添加HSTS安全头,兼顾安全性和SEO效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:12:15