如果它是I18n,如何从根URL中删除参数

过时(至少对谷歌来说)

最近我研究了一下SEO,发现搜索引擎在某种程度上“不喜欢”URL中的参数。 可理解,因为它们不是真正的人类可读或往往不是永久性的。


现在的问题是,如果我按照Rails指南设置I18n然后想要链接到root_path怎么办? 它链接到根,但在URL中添加了?locale=en 。 所以http://www.example.com/?locale=de

即使SEO不再受此影响,我认为如果URL看起来像http://www.example.com/en而不是http://www.example.com/?locale=en ,它看起来会更好。

我找到了一个非常简单的解决方案。

我刚刚添加了另一条路由到我的routes.rb名为i18n_root

例:

 Rails.application.routes.draw do root 'welcome#index' # ... get ':locale' => 'welcome#index', as: :i18n_root end 

现在我只需要将i18n_root_path添加到链接到根路径的链接,一切正常。

返回的url:

 http://www.example.com/en 

另一个可能的解决方案,如果我在应用程序中已经有很多链接,那就是创建一个自定义根目录。

例:

 Rails.application.routes.draw do # root 'welcome#index' <= We don't want to have a default root # ... get ':locale' => 'welcome#index', as: :root end 

希望这也有助于其他人。