情况是这样的,现在有个 Rails 写的社区网站,没有什么特别之处,也就是有用户系统,能发贴回帖,能上传资源,能发布一些新闻什么的。 这个社区网站的网址是 http://community.blah.com 形式的。
现在的需求是做一个主页 http:///www.blah.com ,要从社区网站里面抽一些信息出来,能够在主页上面滚动显示这样子。
那么一般这种事情是怎么干的呢?我想到几种方法:
请问还有没有什么更好的解法了,或者已经有现成的方案么?
谢谢!
应该可以通过在 route 中设置 constraints方法来判断域名 参考http://guides.rubyonrails.org/routing.html#request-based-constraints
constraints
想到一个看起来很丑陋的办法:iframe
reverse-proxy
#3 楼 @ghprince 可否详细说说这个方案,谢谢
#4 楼 @blacktulip http://www.nicolasgarnil.me/blog/2013/handling-multiple-domains-routes-in-ruby-on-rails/
我就是用这个办法,一套程序好几个域名,一个域名在 controller 下对应一个目录,
每个网站都相似,但也有不同。
工作量两个差不多,还是用 API 模式吧
#7 楼 @vkill API 涉及额外的数据渲染解析,暴露出来的接口还要额外的安全考虑,我个人偏向你说的第二种方案
我会选提供 API 让前端去渲染吧,如果不考虑 SEO 第一种方法 用 Nginx 代理新域名的页面到原来的域名,看起来就达到你要的效果了
我做过类似的功能,就是用 1 楼的兄台的解决办法。没必要碰前端服务器,rails 层面就很好解决的事情。
constraints(lambda { |req| req.env['HTTP_HOST'].present? && req.env['HTTP_HOST'].include?('blah.com ') }) do get '/', to: 'home#index2' end
谢谢楼上各位,已经用 constraints 解决。
重定向,或者反向代理。。