基于虚拟主机(主机HTTP头)的Rails路由

Eer*_*ero 5 routes ruby-on-rails virtualhost

是否可以根据请求URL的主机部分指定Ruby on Rails路由?

在config/routes.rb中,我有

root :to => 'entities#index'
Run Code Online (Sandbox Code Playgroud)

但我想使用相同的代码库来提供多个站点,每个站点都有自己的默认控制器.

JCo*_*era 11

您可以使用请求基本约束

root :to => "siteone#index", :constraints => {:host => "siteone"}
root :to => "sitetwo#index", :constraints => {:host => "sitetwo"}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.

  • 还要记住在不受约束的"根"行之前放置这些约束,因为它们是按顺序处理的.我遇到的另一个问题是,除非您的"siteone"域DNS配置为指向您的localhost,否则您无法测试本地服务器上的新路由.一旦正确完成并部署到生产环境,您就需要重新配置DNS以指向生产服务器. (2认同)
  • @AminAriana,您可以在不修改 DNS 服务器的情况下在本地测试路由,方法是将约束中的主机名使用本地 IP (127.0.0.1) 添加到 /etc/hosts 文件中 (2认同)