使用 301 重定向来维护 SEO

using a 301 redirect to maintain SEO

我目前正在 rails 应用程序中使用 freindly_id gem 来压缩 URL 并使它们看起来不错。所以不是 URL #root/cities/1234 他们是 #root/cities/#cityname

我们正在寻求将 URL 的城市名称部分更改为其他内容,这似乎与将数据库中的 slug 更改为简单地读取其他内容一样直接,但是,有人建议我们必须使用301 重定向以维护我们迄今为止获得的 SEO。

任何人都可以告诉我用 slug 改变 URL 是否有影响,因为从我的角度来看,URL 似乎基本上没有真正改变,例如基础 URL 仍然是 /cities/1234

我不会直接在数据库中做。如果您使用 friendly_ids history 功能,您可以在您的 rails 控制器中进行重定向,前提是它使用的是过时的 slug。

来自文档:

before_filter :find_post

def find_post
  @post = Post.find params[:id]

  # If an old id or a numeric id was used to find the record, then
  # the request path will not match the post_path, and we should do
  # a 301 redirect that uses the current friendly id.
  if request.path != post_path(@post)
    return redirect_to @post, :status => :moved_permanently
  end
end

当您的页面上没有分页时,以上答案有效。 有时你必须使用分页,然后上面的答案总是将用户发送回模型的第一页。如果你必须这样做,我认为最好将你的身份与你的模型进行比较,如下所示:

  if request.parameters[:id] != @post.slug
    return redirect_to post_path(@post, page: params[:page]), status: :moved_permanently
  end

这样用户就可以重定向到正确的分页页面