我将在这里概述两种方法。如果您仍然拥有 cpanel,则可以使用一种方法,因为您要为 HostGator 的托管付费。 (如果您使用 Heroku 进行托管,这是没有意义的,所以这不是一个长期的解决方案。)如果您只有一个在 HostGator 注册的域,并且理论上在任何一种情况下都可以,其他方法都有效。
不管怎样,这样做:
heroku domains:add www.mysite.com
heroku domains:wait 'www.mysite.com'
1) 如果您使用 HostGator 进行托管
在 mysite.com/cpanel 登录您的 HostGator cpanel 界面。向下滚动到域并打开高级区域编辑器(单击链接)。您不会添加记录。相反,你要改变一个已经存在的。查找名称为“www.mysite.com”的记录。 (末尾有句点)类型为 CNAME。单击编辑。将 CNAME 字段更改为当您键入 heroku domains 或向下滚动到 Heroku 仪表板中设置下的域和证书时,heroku 为您提供的 DNS 目标。我的看起来像www.mysite.com.herokudns.com。完成更改。
访问 www.mysite.com。 请在网址中输入 www。 www 必须在网址中。现在应该指向您的 Heroku 站点。也许您会看到 400(错误请求)错误。这可能是因为您的后端不允许 Heroku 作为主机。例如,如果您有一个 Django 应用程序,它未处于调试模式(出于安全原因,您应该将 DEBUG 设置为 False),您还必须在 settings.py 中设置 ALLOWED_HOSTS 列表以包含“www.mysite.com”。否则,当您尝试从 www.mysite.com 域访问该站点时,您将收到 400 错误。
最终结果是 www.mysite.com 指向您想要的位置,www.mysite.com/some_page 也是如此。
但是如果用户只输入“mysite.com”怎么办?他们将被定向到您的 HostGator 站点。一个简单的解决方案是转到 CPanel 的 Redirects 部分,也在 Domains 下,并从您的域进行永久重定向(以“/”开头的文本框留空)到 http://(((www.mysite.com/))) [StackOverflow 不会让我把它放进去没有括号之类的东西。] 所有这一切都是强制“www”出现在 URL 中,即使用户没有键入它。
现在,无论用户输入什么,他们最终都会出现在您的 Heroku 站点上。我不介意在 URL 框中挂出“www”,所以这对我有用。
2) 如果您没有使用 HostGator 进行托管,只是放弃了它,或者只是不喜欢该公司(很好理解)
如果您没有 HostGator 托管或放弃它,您可能无法访问 cpanel 的内容。首先,添加域,如顶部所示。现在为 Heroku 安装 PointDNS 插件。它会自动与您的自定义域同步(即使在您安装之后)。因此,当您在 Heroku 仪表板中打开 PointDNS 时,您会看到它设置了基本上您需要的一切。在 HostGator 中,https://portal.hostgator.com/domain/manage),单击您的域名并找到更改名称服务器的链接。选择Manually set my nameservers,并将默认名称服务器替换为您在PointDNS 附加页面主页上看到的标有NS 的名称服务器。 (您也可以在 PointDNS 中随意添加或更改它们。)
HostGator 表示需要几天时间才能传播。我看到更改在几秒钟内生效。
如果现在没有www. 就无法工作(检查索引页以外的页面),我已经概述了一个潜在的解决方案here。
使用此 PointDNS 解决方案,您可能希望在世界不同的地方测试您的网站,以确保它在那里可用。我确保在我希望人们看到它的地方可以使用我的,但它在北京也可以使用,所以我认为使用 PointDNS 不会有地理限制。我喜欢使用 www.webpagetest.org 从不同位置测试网站。