2012-07-15 68 views
1

有没有一种方法可以为每个区域/ tld使用不同的URL(特别是针对SEO的原因)?如何让基于locale/tld的网址/路线?

所以说,如果我来通mysite.us我可以有:

http://mysite.com/some-nice-url

,如果来了直通mysite.org,我可以有:

http://mysite.fr/another-very-nice-url

谢谢

+0

重复的:http://stackoverflow.com/questions/2282346/i18n-locale-in-the-url – 2012-07-15 13:28:54

+0

没有不是,请阅读这个问题。我不想要一个/:locale/scope。 – Cezar 2012-07-15 13:40:19

回答

2

你可以做什么是:

class ApplicationController < ActionController::Base 
    .. 
    before_filter :domain_locale 
    protected 
    def domain_locale 
     I18n.locale = request.host.split('.').last 
    end 

    ... 
end 

当然,您可以在domain_locale内添加一些更复杂的功能。

因此,对于你的routes.rb,你可以添加约束这样的:

match 'soem_nice-url', :to => 'nice#some', :constraints => {:host => 'mysite.com'} 
match 'soem_nice-url', :to => 'nice#another', :constraints => {:host => 'mysite.fr'} 
+0

提取语言环境不是问题,每个语言环境的路由是...我想为不同的语言环境提供不同的路由 – Cezar 2012-07-15 14:43:18

+0

啊我没有意识到,更新了一些帮助的答案。 – moritz 2012-07-16 08:04:10