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

Posted

技术标签:

【中文标题】Heroku/GoDaddy:将裸域发送到 www [关闭]【英文标题】:Heroku/GoDaddy: send naked domain to www [closed] 【发布时间】:2012-07-14 14:34:39 【问题描述】:

我想弄清楚如何让我的网站的裸域重定向到 www 域。我正在使用 Heroku 并拥有来自 GoDaddy 的域。因为 Heroku,我的 A 记录已经设置为:

@:75.101.145.87

@:75.101.163.44

@:174.129.25.170

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

我一直在寻找整个互联网,但找不到一个简单、免费的答案来说明如何进行此重定向。一些答案讨论使用付费服务,我不想这样做,而另一些答案则讨论进入和修改 Heroku 设置,但实际上并没有给出太多解释。现在,如果你去我的裸域,只是 Heroku 说不存在这样的应用程序,而如果你去我的 www 域它是我的应用程序。

【问题讨论】:

Heroku 常见问题解答仅说明如何使用 DNSimple 进行重定向。他们的支持页面链接到 ***。 我认为 Emil 对此的回应有点苛刻,这个网站是解决我们在编程过程中遇到的问题的资源,这是我现在遇到的问题! :D 这应该作为 Dupe 而不是 Off-Topic 关闭:***.com/questions/16022324/… @ChrisMoschini 在您引用的问题中接受的答案不适用于 GoDaddy,因为 GoDaddy 不支持 ALIAS 记录,仅支持 CNAME。我认为这是它自己的问题。 无论设置什么 A 记录,都不可能有一个裸域直接指向 heroku。我们只能将其设置为路由到 www,其中 CNAME 指向 your-app-name.herokuapp.com 【参考方案1】:

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

如果您这样做,那么到 yourdomain.com 的所有流量都将被路由到 Heroku 应用 CNAME(即 better approach)。

但是,请注意,如果您使用的是 Cedar stack,则不要使用 proxy.heroku.com 作为您的 www CNAME 的主机。而是使用your-app-name.herokuapp.com。这些详细信息是covered here。

GoDaddy 还 specifies 表示,为了让您的域名转发,其 A 记录必须指向 64.202.189.170 或必须位于以下范围之间:50.63.202.1 - 50.63.202.31 或 184.168.221.1 - 184.168。 221.31.

【讨论】:

如果您使用 SSL 作为 heroku 声明,这会产生警告/错误吗?他们说如果 https://example.com 被重定向,则会出现警告。 @jaqx,这发生在我身上,你有没有办法避免用户收到这个警告? @jackerman09 我只是厌倦了麻烦并切换到 DNSimple @Matt GoDaddy 无法做到这一点。如果需要,请使用 DNSimple 或 DNS Made Easy 等其他提供商的 ALIAS/ANAME 功能。 @RyanDaigle 谢谢瑞恩。我建议大家离开godaddy more than one reason。 NameCheap.com 是我现在使用的人。他们很棒,他们支持我想做的事情。此外,NameCheap 接受bitcoin。【参考方案2】:

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

【讨论】:

为什么要另外付费给别人? 先生,您是救生员。 @Vezu:非 ssl 转发是完全免费的。您只需将裸域的 A 记录指向该 IP 地址,它就会将浏览器重定向到 www 域。您甚至不需要他们的帐户。 我正在尝试为我的 wwwizer 合并,并且在我的 A 记录中,根据 wwwizer 的说明,我的主机为“@”,指向为 174.129.25.170,但我收到了他们的错误消息当我访问我的裸域时页面!我做对了吗??【参考方案3】:

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

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 地址,这些 IP 地址可以 随时更改,使用A记录指向您的应用程序不是 支持的。为确保您的域始终正确指向 路由网格,使用配置子域(例如 www.example.org 中的 www) CNAME 记录:

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 自定义域添加到他们的其中一个应用程序中。

【讨论】:

Heroku 的 IP 地址和网址是 appname.heroku.com 还是 proxy.heroku.com? 你真的应该看看这篇文章,devcenter.heroku.com/articles/custom-domains,因为它涵盖了你想做的所有事情。 这种方法将 CNAME www 指向@,它仍然将流量路由到固定 IP 地址(与 A 记录具有所有相同的缺点)。使用***重定向,在 GoDaddy 上这称为“转发”。【参考方案4】:

如果您在裸域上设置了 IP 地址,并且您的 www cname'd 到 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,但前提是它在生产中运行。

【讨论】:

理想情况下,这是在 DNS 级别完成的,避免通过 Heroku 的固定 IP 地址。另外,不确定这是否是 Ruby 应用程序? Ryan,无法在 DNS 级别进行重定向。它们始终由 HTTP 完成。 为什么作为初始化器,为什么不直接放在生产环境配置中? 当我使用heroku + 我的客户域时,我必须有任何指向heroku 的A 记录吗?如果是,它的价值是什么?【参考方案5】:

要与 Network Solutions 一起使用,请执行以下操作:

将 yourdomain.com 指向 www.yourdomain.com 的网络解决方案。 方法如下。

    客户经理中,选择我的域名

    选择您要管理的域名

    在绿色框中,选择 Change Where Domain Points

    选择高级 DNS,然后继续

    首先,通过选择编辑A记录

    来编辑A记录

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

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

    在别名栏中输入“www”

    将 TTL 设置为 7200,但在同一行,在“其他主机”部分输入博客服务提供的名称服务器 [ IE 立即遵循 HEROKU 说明 www --> yourapp.herokuapp.com (Cedar Stack) ]

    选择继续

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

host domain.com
host www.domain.com

【讨论】:

以上是关于Heroku/GoDaddy:将裸域发送到 www [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Cloudfront 将裸域重定向到 www?

如何将裸域转发到谷歌应用托管站点的 www.domain

使用 S3 静态网站托管重定向到无法在 chrome 中工作的 WWW

如何使用 Route 53 将裸(顶点)域重定向到 www?

Cloudfront 使用 ssl 将 www 重定向到裸域 [关闭]

复杂的重定向:HTTP 到 HTTPS + localhost 上的端口和裸域到 www,除了 localhost