我有多个域名,例如foo.com
和baz.com
,指向相同的应用程序
对于其中一些域,我需要在URL中包含区域设置,对于其他域,区域设置不应出现在URL中。
例如,foo.com/en/about
与baz.com/about
相同。
我的想法是,根据域名在网址中有条件地包含(:locale)
内容。
我想知道是否有可能在routes.rb
文件中检测到请求的域名?
例如request.domain
之类的内容,可以从控制器获得,但可以从routes.rb
文件获得。
答案 0 :(得分:1)
从答案https://stackoverflow.com/a/4737007/2018293开始。您可以在lib/domain_constraint.rb
;
class DomainConstraint
def initialize(domain)
@domains = [domain].flatten
end
def matches?(request)
@domains.include? request.domain
end
end
然后在你的路线中使用它;
constraints DomainConstraint.new('mydomain.com') do
root :to => 'mydomain#index'
#other routes for the domain
end