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

为何裸域https://dinpodcast.com无法跳转至www子域名?

问题分析与解决办法

你的推测是正确的:当访问https://dinpodcast.com时,浏览器会先尝试建立SSL加密连接,此时请求先到达GoDaddy的转发服务器,但该服务器没有配置对应dinpodcast.com的SSL证书,浏览器直接触发安全错误,根本没机会执行跳转逻辑。

无需购买GoDaddy SSL证书的解决办法

核心思路是让裸域的HTTPS请求直接指向Heroku(而非通过GoDaddy转发),利用Heroku的ACM自动生成证书,再通过Django完成跳转:

  1. 取消GoDaddy的域名转发设置
    先删掉GoDaddy里针对裸域的转发规则,避免后续配置冲突。

  2. 在Heroku添加裸域配置
    用Heroku CLI执行命令:

    heroku domains:add dinpodcast.com --app 你的应用名称
    

    执行后会得到一个类似xxx.herokudns.com的DNS目标地址。

  3. 在GoDaddy配置裸域的DNS记录

    • 如果GoDaddy支持ALIAS/ANAME记录(别名记录),直接为dinpodcast.com添加ALIAS记录,指向步骤2得到的Heroku DNS目标;
    • 如果不支持ALIAS/ANAME,就添加A记录,指向Heroku提供的IP地址(可通过dig xxx.herokudns.com获取,但ALIAS更稳定,因为Heroku IP可能变更)。
  4. 等待Heroku ACM生成裸域证书
    Heroku的ACM会自动检测新增的域名,一般几分钟到几小时内会生成并部署对应dinpodcast.com的SSL证书,你可以通过heroku certs命令查看状态。

  5. 在Django中配置强制HTTPS和域名跳转

    • 在settings.py中设置:
      SECURE_SSL_REDIRECT = True
      SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
      ALLOWED_HOSTS = ['dinpodcast.com', 'www.dinpodcast.com', 'dinpodcast.herokuapp.com']
      
    • 实现裸域跳转到www子域名,可在Django的根urls.py中添加重定向规则:
      from django.http import HttpResponsePermanentRedirect
      from django.conf import settings
      
      def redirect_to_www(request):
          return HttpResponsePermanentRedirect(f'https://www.dinpodcast.com{request.path}')
      
      urlpatterns = [
          # 你的其他路由配置
      ]
      
      # 仅在生产环境启用跳转
      if not settings.DEBUG:
          urlpatterns.insert(0, path('', redirect_to_www))
      

配置完成后,访问https://dinpodcast.com时,会先通过Heroku的SSL证书建立安全连接,再由Django永久跳转到https://www.dinpodcast.com,彻底解决浏览器报错问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:27:14