在Heroku和Namecheap上设置自定义域名

46

我已经按照https://devcenter.heroku.com/articles/custom-domains上的所有说明设置了自定义域名,但仍然无法正常工作。

在Heroku上,我有以下域名:

myapp.herokuapp.com

example.com

www.example.com

而在Namecheap上,我有以下设置:

主机名 | IP地址/URL | 记录类型

@ http://example.com URL重定向

www myapp.herokuapp.com. CNAME(Alias)


当我在终端中运行“host www.example.com”时,我预期会得到“www.example.commyapp.herokuapp.com的别名”。但实际上,我得到了:

www.example.commyapp.heroku.com的别名”

我无法理解为什么它指向了myapp.heroku.com,因为我只指定了myapp.herokuapps.com

有人知道这是为什么吗?

9个回答

53

更新说明: Heroku和Namecheap不时更改其界面。本答案可能存在过时截图,但会随着时间的推移进行更新。请参阅下面的这些更新。

我刚刚完成了此操作,因此我认为我可以加入,因为该答案没有说明如何同时使www.example.orgexample.org起作用。 Heroku还有点更改了其管理界面。

Namecheap


  • 首先,登录到Namecheap
  • 转到域名列表,并单击要配置的域的“管理”。

Namecheap

  • 将两种记录类型都设置为CNAME(别名),并在两个URL框中输入<name>.herokuapp.com (@和www)。

(PS:如果它们不在那里,请单击“添加新记录”并在那里添加它们。)

接下来,转到Heroku


  • 登录并从列表中选择您的项目。在此示例中,我们选择“Lakka”项目。

  • 在项目页面上,单击设置

  • 向下滚动并找到添加域部分

  • 输入你的 example.org 并点击保存。
  • 再次点击按钮,输入你的 www.example.org 并点击保存。

完成了!现在当你在浏览器中输入 example.orgwww.example.org 时,两者都会显示你的 Heroku 项目。

在本例中,http://lakka.herokuapp.com 将可在 http://lakkatracker.comhttp://www.lakkatracker.com 上访问(在 DNS 更新后)。

(如果你想将从 www.example.org 的流量重定向到 example.org,这是一个好习惯,你可以使用“URL(重定向)”类型的记录来处理 www 主机名。)

在 DNS 记录更新之前可能需要一些时间。如果你的更改无法立即反映,可以尝试使用代理进行测试,例如 Anonymouse


1
如果您没有看到“添加新记录”的选项,请确保您的“主机记录”类型设置为“BasicDNS”https://www.namecheap.com/support/knowledgebase/article.aspx/782/10/how-do-i-set-my-domain-to-use-namecheaps-default-dns-servers。 - jakeforaker
3
@上不应该是“URL 重定向记录”吗?我认为 Namecheap 表示您不应在 @ 和 www 上都设置 CNAME 记录。 - swang
谢谢。那很有帮助。 - egyamado
2
据Namecheap称,裸域名上的CNAME问题在于它可能会破坏MX记录。因此,如果您在该域名上不使用电子邮件,我想这应该没问题吧?https://www.namecheap.com/support/knowledgebase/article.aspx/9646/2237/how-can-i-set-up-a-cname-record-for-my-domain - Dustin Wyatt
非常有用的答案!但是,我需要myapp.herokudns.com地址(在Heroku上添加新域名后显示)有什么用呢? - mdmb
显示剩余2条评论

37

1) 进入Namecheap,在您要管理的域名下进行操作。

2) 在左侧边栏中,点击“所有记录主机”,而不是其他教程告诉您的任何其他东西。不需要进行 DNS 指向更改。使用别名更容易。

namecheap sidebar all host records

3) 然后,您将看到以“www”开头的一行作为 CNAME (别名) 选项。将其填写为您的Heroku应用程序的域名 example.herokuapp.com

namecheap CNAME alias location

这样就完成了 Namecheap 的步骤。

4) 然后在 Heroku 设置中,在“域”下输入您购买的要显示的域名。

heroku settings domains

就这样! 让 Heroku 和 Namecheap 都知道两个域名别名就像轻松愉快地一样简单。

感谢这篇博客: http://blog.romansanchez.me/2013/06/08/point-namecheap-domain-to-heroku/

更新:

显然,Heroku 仅允许以 www. 开头的网站。要拥有没有www.的真正根域名需要进行一些额外的技术操作。


2
另外,不要忘记在@后面添加以下内容:@ www.mydomain.comredirect,这样www.mydomain.com就会重定向到mydomain.com - Muhammad Hewedy
这是我的设置。我的 CNAME 是 herokuapp 域名,而且它工作正常。你测试过了吗?你有所有其他的设置吗?当然,你的 Heroku 设置应该把你实际购买的域名作为别名。 - ahnbizcad
1
我和他们交谈,他们告诉我 heroku 不允许/支持这个。 :( - Muhammad Hewedy
博客链接已失效。 - huertanix
这就是为什么我们在SO中有答案,而任何链接都是补充的。 - ahnbizcad
显示剩余5条评论

18

Namecheap更新了其界面。新的截图可以补充其他好答案:

第一步骤

第二步骤

第三步骤


5
如果您想让所有流量都指向 http://example.com,请按照以下步骤操作:

并在 Heroku 设置中设置 example.comwww.example.com 两个域名。

然后使用 http://anonymouse.org 进行测试。


3
设置一个类似下面这样的namecheap配置: enter image description here 再设置一个类似下面这样的heroku配置: enter image description here 然后你就可以开始使用了!

1

根据您的应用程序,可能是由于未使用SSL证书导致的。如果您尝试在免费的dyno上使用SNI SSL,则不会起作用。在我的情况下,我升级到hobby dyno,通过ACM立即起作用。


这就是我要做的了。谢谢! - Amjad Abujamous

0

今天我将一个Namecheap域名链接到了我的Heroku应用程序上,现在有点不同了,以下是我所做的:

  1. 将域名(在Namecheap购买)添加到您的Heroku应用程序中,例如www.example.com。'www'很重要。复制生成的xxx.herokudns.com链接。
  2. 现在进入Namecheap的域名设置。点击高级DNS。
  3. 添加以下两个记录:
  • 类型:CNAME记录,主机:www,值:从步骤1中复制的URL。
  • 类型:URL重定向记录,主机:@,值:http://www.example.com
  1. 保存并等待最多30分钟。

0

我无法让www.example.comexample.com同时工作,所以我找到的一个解决方法是将CNAME和@设置为www.,然后在域选项卡上,将“重定向域”从example.com设置为www.example.com


0

这里有两种可能性:

  1. 您之前将DNS记录指向了myapp.heroku.com,但更改尚未传播
  2. 这可能是Heroku进行更改的结果,将应用程序从heroku.com域移动到herokuapp.com域,但我不确定为什么会发生这种情况或为什么会发生在您身上;我的应用程序记录都直接指向herokuapp.com,但我没有使用NameCheap。

您可以尝试使用像.tk这样的实体注册不同的(免费)域名,以查看是否特定于NameCheap。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接