0

是否有宝石可以做到这一点,或者甚至可以烘烤?我现在对事情的理解是,每当我更改页面的路径(也许我为 SEO 这样做)时,我都需要创建一个新的 301 重定向。这不应该自动处理吗?

如果是这样,它是如何自动处理的,我该如何使用它?

谢谢!!!

4

1 回答 1

1

这是一个相当复杂的问题,很大程度上取决于您的路线现在的样子。简单的答案是:不,这不是由 Rails 自动处理的。

处理这种重定向的最简单方法是在routes.rb文件中,从旧路径重定向到新路径。像这样的东西:

match '/products/:id', redirect("/new_products/%{id}")

您可以在Rails 路由指南中了解有关这种重定向的更多信息。

如果您只更改产品的一个实例,那么显然这没有多大意义——您不能对每个更改的对象都这样做。在这种情况下,我们假设您没有使用标准的基于 ID 的路由;如果你是那么这不会是一个问题。(由于 ID 不会改变,相反,您的路由似乎是基于一个确实改变的字段——比如姓名或日期等等。)

在这种情况下,您可能希望将路由字段从当前的任何内容中提取出来,并将其提取到它自己的 slug 列中。为此我推荐非常出色的friendly_id gem:它允许您自动生成slug,它的历史模块允许您使用对象的旧slug 执行查找。

然后,如果您认为有必要,您可以通过它的 ID、它的 slug 或它的任何旧 slug 来查找一个对象。

于 2012-11-13T20:39:15.903 回答