我有一个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.com
和cgc.our-website.com
- 不确定这是否会影响潜在的解决方案。
答案 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,其他子域部分将被视为主域的一部分。请注意,这可能会影响“子域”匹配器的工作方式,但我还没有验证过。