【发布时间】:2012-11-02 07:40:29
【问题描述】:
有没有一种宝石可以做到这一点,或者它甚至被烘烤过?我现在对事情的理解是,每当我更改页面的路径(也许我为 SEO 这样做)时,我都需要创建一个新的 301 重定向。这不应该自动处理吗?
如果是这样,它是如何自动处理的,我该如何使用它?
谢谢!!!
【问题讨论】:
标签: ruby-on-rails seo http-status-code-301
有没有一种宝石可以做到这一点,或者它甚至被烘烤过?我现在对事情的理解是,每当我更改页面的路径(也许我为 SEO 这样做)时,我都需要创建一个新的 301 重定向。这不应该自动处理吗?
如果是这样,它是如何自动处理的,我该如何使用它?
谢谢!!!
【问题讨论】:
标签: ruby-on-rails seo http-status-code-301
这是一个相当复杂的问题,很大程度上取决于您的路线现在的样子。简单的答案是:不,这不是 Rails 自动处理的。
处理这种重定向的最简单方法是在routes.rb 文件中,从旧路径重定向到新路径。像这样的:
match '/products/:id', redirect("/new_products/%{id}")
您可以在Rails routing guide 了解有关这种重定向的更多信息。
如果您只更改产品的一个实例,那么显然这没有多大意义——您不能对每个更改的对象都这样做。在这种情况下,我们假设您没有使用标准的基于 ID 的路由;如果你是那么这不会是一个问题。 (由于 ID 不会更改,因此您的路由似乎是基于确实更改的字段 - 例如名称或日期等。)
在这种情况下,您可能希望将路由字段从当前的任何内容中提取出来,并将其提取到它自己的 slug 列中。为此,我推荐非常出色的 friendly_id gem:它允许您自动生成 slug,它的 history module 允许您使用对象的旧 slug 执行查找。
然后,如果您认为有必要,您可以通过它的 ID、它的 slug 或它的任何旧 slug 来查找一个对象。
【讨论】: