146

我试图弄清楚如何让我的网站的裸域重定向到 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 域它是我的应用程序。

4

5 回答 5

233

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

GoDaddy 中的域转发

如果你这样做,那么到 yourdomain.com 的所有流量都将被路由到 Heroku 应用程序 CNAME(这是更好的方法)。

但是,请注意,如果您在Cedar 堆栈上,则不要用于您的CNAMEproxy.heroku.com的主机。www而是使用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。

于 2012-07-15T17:47:35.183 回答
22

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

于 2013-03-25T01:37:41.860 回答
8

在 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 地址集合可以随时更改,并且不支持使用 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 自定义域添加到他们的一个应用程序中。

于 2012-07-15T14:37:31.357 回答
5

如果您在裸域上设置了 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,但前提是它在生产中运行。

于 2012-07-15T17:16:47.237 回答
3

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

将 yourdomain.com 指向 www.yourdomain.com 的网络解决方案。就是这样。

  1. Account Manager中,选择My Domain Names

  2. 选择您要管理的域名

  3. 在绿色框中,选择更改域点的位置

  4. 选择Advanced DNS,然后继续

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

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

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

    在别名栏中输入“www”

    将 TTL 设置为 7200,但在同一行,在 Other Host 部分输入博客服务提供的名称服务器 [IE FOLLOW THE HEROKU INSTRUCTIONS NOW www --> yourapp.herokuapp.com (Cedar Stack)]

    选择继续

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

host domain.com
host www.domain.com
于 2013-02-14T02:38:14.157 回答