如果是 I18n,如何从根 URL 中删除参数
How to remove parameters from the root URL if it does I18n
已过时(至少 Google)
最近我研究了一下 SEO,发现搜索引擎在 URL 中以某种方式 "don't like" 参数。易于理解,因为它们不是真正的人类可读的或者往往不是永久的。
现在的问题是,如果我按照Rails Guides设置I18n然后想link到root_path
怎么办?它 links 到根,但添加 ?locale=en
到 URL。所以 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
添加到 link 中,将 link 添加到根路径中,一切正常。
返回的URL:
http://www.example.com/en
另一个可能的解决方案,如果我已经在应用程序中有很多 link,那就是创建一个自定义根目录。
示例:
Rails.application.routes.draw do
# root 'welcome#index' <= We don't want to have a default root
# ...
get ':locale' => 'welcome#index', as: :root
end
希望这对其他人也有帮助。
已过时(至少 Google)
最近我研究了一下 SEO,发现搜索引擎在 URL 中以某种方式 "don't like" 参数。易于理解,因为它们不是真正的人类可读的或者往往不是永久的。
现在的问题是,如果我按照Rails Guides设置I18n然后想link到root_path
怎么办?它 links 到根,但添加 ?locale=en
到 URL。所以 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
添加到 link 中,将 link 添加到根路径中,一切正常。
返回的URL:
http://www.example.com/en
另一个可能的解决方案,如果我已经在应用程序中有很多 link,那就是创建一个自定义根目录。
示例:
Rails.application.routes.draw do
# root 'welcome#index' <= We don't want to have a default root
# ...
get ':locale' => 'welcome#index', as: :root
end
希望这对其他人也有帮助。