Rails约束和Heroku子子域

时间:2014-09-11 15:30:14

标签: ruby-on-rails heroku dns subdomain

我有一个Rails应用程序,我测试使用约束为某些路由定义子域(cgc)。在本地,一切都按预期工作。然而,将我的代码推送到Heroku上的登台应用程序,子域名无法正常工作。

我已尝试设置CNAME记录,以便staging.our-website.com指向our-app.herokuapp.com,另一个cgc.staging.our-website.com的CNAME记录也指向our-app.herokuapp.com。这两个域都已添加到Heroku中的应用程序本身,并且两者都路由到应用程序的索引。我想要的最终结果是" cgc"由Rails处理的子域,以便`cgc.staging.our-website.com转到目标页面。

如果一切顺利,那么应用的最终主页将分别为our-website.comcgc.our-website.com - 不确定这是否会影响潜在的解决方案。

1 个答案:

答案 0 :(得分:1)

我不确定您的路由设置如何,但如果您执行以下操作:

constraints(subdomain: /^cgc(\.|$)/) do
    # Any subdomain-only matches here
end

然后你将'cgc'作为子域名,以及'cgc.whatever-in-here',这应该符合你的需要:)

问题在于Rails将根域名之前的所有内容都视为子域,而不仅仅是第一部分。我不确定哪个技术上正确。

<强>跟进

为了解决我注意到的问题(关于Rails和子域处理),你可能想看一下

config.action_dispatch.tld_length

设置。将其增加到1意味着为了生成URL,其他子域部分将被视为主域的一部分。请注意,这可能会影响“子域”匹配器的工作方式,但我还没有验证过。