我为主页实现了规范网址,如下所示:我添加了这一行
<link rel='canonical' href='https://example.com/'>
我在index.html.erb
部分的header
上添加了这一行。它工作正常。
现在我有动态路由生成线如下:
<a href "<%= search_equipments_path(:category_id => category.id) %>">
我试过以下:
<a rel='canonical' href="<%= search_equipments_path(:category_id => category.slug) %>">
但没有奏效。
我们可以用这种方式在rails中设置规范标签。此rails代码将输出完整当前url的规范标记。在HTML head部分的布局中添加它。
<link rel="canonical" href="<%= url_for(:only_path => false) %>" />
您还可以使用以下命令指定要用于此URL的默认协议:
<link rel="canonical" href="<%=url_for(:only_path => false, :protocol => 'https')" />
有关更多选项,请参阅此link
希望这可以帮助。
您可以使用content_for
在布局的标题部分中创建动态块:
# app/views/layouts/application.html.erb
<!DOCTYPE html>
<html>
<head>
# ...
<% if content_for?(:canonical_url) -%>
<%= tag :link, href: content_for(:canonical_url), rel: 'canonical' %>
<% end -%>
</head>
</html>
然后,您可以在视图中提供canonical_url
:
<%= provide(:canonical_url, search_equipments_url(category.slug)) %>