我试图避免使用gem,因为我的问题非常简单。
我的网站有以下内容?params =
"type" just filters by type. if this isnt specified they're all lumped together
"sort" sorts by date/whats hot/latest
"view" changes compact view/list view
"scroll" isnt even used yet, its for infinite scroll on or off which i havent put in yet
"reset" is a link when you click the logo (not the home link) that resets all session params to "all" and "whats hot" (the default)
"page" is the pagination which i think is the only really important one
在得到一些帮助之后,我被告知?page=
是唯一非常重要的一个,因为我的所有内容都可以在没有任何查询参数的情况下访问,除了分页。
所以现在我有了这个:
<link rel="canonical" href="<%= "http://#{request.host + request.fullpath}" %>">
所以我的问题是我如何修改它以便它只放置URL,并且还放置?page =如果它存在但忽略所有其他参数?
答案 0 :(得分:4)
这似乎有效
<link rel="canonical" href="<%= "http://#{request.host + url_for(:page => params[:page]) }" %>">
答案 1 :(得分:2)
2017年,我知道,你也可以使用Rails Auto Discovery Link。
<head>
<%= auto_discovery_link_tag(:atom, your_path('your-params'), { rel: "canonical" }) %>
</head>
答案 2 :(得分:0)
在最简单的情况下应该有效:
<link rel="canonical" href="<%= "#{request.protocol}#{request.host}#{request.path}" %>">
如果您正在使用协议或想在规范网址中使用GET参数,请不要忘记添加它。