Heroku / GoDaddy:将裸域发送到www [关闭]


142

我试图弄清楚如何为我的网站获取裸域重定向到www域。我正在使用Heroku,并具有GoDaddy的域名。由于Heroku,我的A记录已经设置为:

@:75.101.145.87

@:75.101.163.44

@:174.129.25.170

我的www CNAME指向proxy.heroku.com。

我一直在Internet上四处寻找,但是找不到关于如何进行此重定向的简单免费的答案。一些答案讨论了使用付费服务(我不想这样做),而另一些则讨论了进入和修改Heroku设置,但实际上并没有给出太多解释。现在,如果您转到我的裸域,则只是Heroku说不存在这样的应用程序,而如果您转到我的www域,则是我的应用程序。


8
Heroku FAQ仅说明如何使用DNSimple进行重定向。他们的支持页面链接到StackOverflow。
安德鲁·拉瑟姆

32
我认为Emil在这方面的反应有点苛刻,该站点是解决编程过程中遇到的问题的资源,而这正是我现在遇到的问题!:D
丹尼尔·莫里斯

:这或许应该被封闭,杜佩,而不是题外话stackoverflow.com/questions/16022324/...
克里斯Moschini

2
@ChrisMoschini您引用的问题上的已接受答案不适用于GoDaddy,因为GoDaddy不支持ALIAS记录,仅支持CNAME。我认为这是它自己的问题。
Topher Hunt 2014年

1
无论设置了什么唱片,都不可能将裸域直接指向heroku。我们只能将其设置www为指向CNAME指向的路由your-app-name.herokuapp.com
Chetabahana '16

Answers:


231

在GoDaddy上,使用“转发”功能设置从yourdomain.com到的转发www.yourdomain.com。可以在“域信息”部分底部的域管理器中访问转发功能:

GoDaddy中的域转发

如果执行此操作,则所有到yourdomain.com的流量都将路由到Heroku应用程序CNAME(这是更好的方法)。

但是请注意,如果您位于Cedar堆栈上,请不要将其proxy.heroku.com用作wwwCNAME 的主机。改为使用your-app-name.herokuapp.com。这些细节在这里介绍

GoDaddy还指定为了转发您的域名,其A记录必须指向64.202.189.170或必须在以下范围内:50.63.202.1-50.63.202.31或184.168.221.1-184.168.221.31。


14
如果您按照heroku的要求使用SSL,这会产生警告/错误吗?他们说,如果重定向https:// example.com,则会出现警告。
Jaqx

2
@jaqx,这发生在我身上,您找到避免用户收到此警告的方法了吗?
jackerman09

3
@ jackerman09我只是为烦恼而烦恼,并改用DNSimple
Jaqx

5
@Matt无法通过GoDaddy做到这一点。如果需要,请使用其他提供商(例如DNSimple或DNS Made Easy)的ALIAS / ANAME功能。
Ryan Daigle 2013年

3
@RyanDaigle谢谢Ryan。我建议每个人离开戈达迪的原因不止一个。我现在使用的是NameCheap.com。他们很棒,他们支持我的尝试。另外,NameCheap接受比特币
马特

22

您还可以使用http://wwwizer.com从裸域转发到www。在GoDaddy中,DNS经理在A记录下的@标题中键入174.129.25.170。他们会自动从裸域重定向到带有www的域。在它前面。


5
为什么还要向其他人支付其他费用?
本杰明·2013年

4
先生,您是救生员。@Vezu:非SSL转发是完全免费的。您只需将裸域的A记录指向该IP地址,它将浏览器重定向到www域。您甚至不需要与他们建立帐户。
P O'Conbhui

我正在尝试为我合并wwwizer,在我的A记录中,按照wwwizer的指示,主机为“ @”,指向174.129.25.170的点,但是当我访问裸域时,我得到了他们的错误消息页面!我这样做正确吗?
tx291

7

在GoDaddy的DNS区域编辑器中,您将需要配置CNAME记录www指向@。在您的A记录中,您将使用通配符(*)指向IP地址,第二个A记录使用@作为主机,该主机还将指向网址。这条路,

subdomain1.example.com will forward to your IP
www.example.com will forward to your IP
silly.example.com will forward to your IP
anything.example.com will forward to your IP

在此处输入图片说明

经常问的问题

我可以将* .mydomain.com指向我的Heroku应用程序吗?

是的,使用Heroku的免费“自定义域”功能可以将通配符域指向您的应用程序。

我应该使用哪些IP地址将自定义域指向Heroku?

Heroku路由堆栈使用可随时更改的IP地址集合,并且不支持使用A记录来指向您的应用程序。为确保您的域始终正确指向路由网格,请使用CNAME记录配置子域(例如www.example.org中的www):

If the app is on…   Then CNAME the subdomain to
Bamboo  yourapp.heroku.com
Cedar   yourapp.herokuapp.com

应避免使用裸域(或裸露/顶点)(例如example.org),因为它们会影响可用性并延长正常运行时间。

为什么我不能为我的应用添加subdomain.mydomain.com?

在某些情况下,尝试为应用添加自定义域(例如subdomain.mydomain.com)可能会导致如下错误:

 ! mydomain.com is owned by another user

给定基本域的所有应用程序必须由同一Heroku帐户拥有。上面的错误意味着其他人已经将mydomain.com自定义域添加到了其中一个应用。


1
Heroku的IP地址和网址是appname.heroku.com还是proxy.heroku.com?
安德鲁·拉瑟姆

1
您应该真正查看这篇文章devcenter.heroku.com/articles/custom-domains,因为它涵盖了您要执行的所有操作。
kobaltz

1
这种方法将CNAME www指向@,仍然将流量路由到固定IP地址(与A记录具有相同的缺点)。使用顶级重定向,在GoDaddy上,这称为“转发”。
瑞安·戴格

5

如果您在裸域上设置了IP地址,并且将www命名为yourappname.herokuapp.com,那么您所要做的就是在应用程序中使用RackRewrite之类的内容来重定向请求,使其到达您的应用程序。

您想要设置的是对裸域的任何请求都将重定向到您的www地址。按照安装说明进行操作后,在config / initializers中添加一个初始化程序

 ApplicationName::Application.config.middleware.insert_before(Rack::Lock, Rack
 r301 %r{.*}, 'http://www.yourdomain.com$&', :if => Proc.new {|rack_env
  rack_env['SERVER_NAME'] != 'www.yourdomain.com'
 }
 end if Rails.env == 'production'

也就是说,如果所请求的URL不是www.yourdomain.com,则301会将其重定向到www.yuordomain.com,但前提是该URL在生产环境中运行。


1
理想情况下,这是在DNS级别完成的,从而避免了通过Heroku的固定IP地址进行访问的麻烦。另外,不确定这是否是Ruby应用程序吗?
瑞安·戴格

瑞安,重定向无法在DNS级别进行。它们总是通过HTTP完成。
埃米尔·维克斯特伦(EmilVikström)2012年

为什么要作为初始化程序,为什么不将其放在生产环境配置中呢?
ckarbass

当我使用heroku +我的客户域时,是否必须有任何指向heroku的A记录?如果是,它的价值是什么?
艾伦·科罗马诺

3

为了使它与网络解决方案一起使用,请执行以下操作:

将yourdomain.com指向www.yourdomain.com的网络解决方案。这是如何做。

  1. 在“ 帐户管理器”中,选择“ 我的域名”

  2. 选择您要管理的域名

  3. 在绿色框中,选择“ 更改域点”

  4. 选择Advanced DNS,然后继续

  5. 首先,通过选择“ 编辑A记录”编辑A记录

    对于“ @ none”,输入以下IP地址205.178.189.129,清除“ www”和“ *(所有其他)”的记录,然后选择“继续”。

  6. 其次,通过选择“编辑CNAME记录”来编辑主机别名(CNAME记录)

    在“别名”列中输入“ www”

    保持TTL设置为7200,但在同一行上,在“其他主机”部分中输入博客服务提供的名称服务器 [IE现在跟随HEROKU指令www-> yourapp.herokuapp.com(Cedar Stack)]

    选择继续

现在,等待并使用以下终端命令检查域:

host domain.com
host www.domain.com
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.