gpt4 book ai didi

ruby-on-rails - 在 Heroku 上使用 www 子域的 CNAME 重定向设置自定义域

转载 作者:行者123 更新时间:2023-12-04 07:12:47 26 4
gpt4 key购买 nike

关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

5年前关闭。




Improve this question




我正在使用 Heroku,并为我的应用添加了几个自定义域,即 myapp.comwww.myapp.com .

我在 GoDaddy 的 DNS 有三个 A 记录,“@”指向三个单独的 Heroku IP,“www”子域的 CNAME 指向 proxy.heroku.com .

我想要做的是将任何流量重定向到 www.myapp.commyapp.com .我尝试将 CNAME 设置为“@”,但它仍然保留在同一个域中。有没有办法可以在 DNS 级别强制执行此重定向?

最佳答案

CNAME 不是重定向,而只是您域的规范名称。这意味着它的行为就像它指向的域(在您的情况下为 myapp.com)。您的浏览器获取与 myapp.com 相同的 IP 地址并向其发送请求。

重定向在 HTTP 级别或更高级别执行。例如,您可以在您的应用程序中执行此操作,也可以为此创建另一个简单的应用程序。

这是直接在您的应用程序中进行重定向的简单示例:

# in your ApplicationController
before_filter :strip_www

def strip_www
if request.env["HTTP_HOST"] == "www.myapp.com"
redirect_to "http://myapp.com/"
end
end

或者你可以使用 rails metal,它可以做同样的事情,但速度要快得多:
# app/metal/hostname_redirector.rb
class HostnameRedirector
def self.call(env)
if env["HTTP_HOST"] == "www.myapp.com"
[301, {"Location" => "http://myapp.com/"}, ["Found"]]
else
[404, {"Content-Type" => "text/html"}, ["Not Found"]]
end
end
end

您还可以使用正则表达式将所有请求与 www. 匹配在主机名前面。

关于ruby-on-rails - 在 Heroku 上使用 www 子域的 CNAME 重定向设置自定义域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3074607/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com