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