我目前正在使用rails应用程序中的freindly_id gem来阻止URL并使它们看起来不错。因此,不是URL#root / cities / 1234,而是#root / cities / #cityname
我们希望将URL的cityname部分更改为其他内容,这似乎与更改数据库中的slug直接读取其他内容一样直接,但是,有人建议我们必须使用301重定向才能维护到目前为止我们已经获得的SEO。
任何人都可以告诉我,使用slug更改URL是否会产生影响,从我的角度来看,似乎URL基本上没有真正改变,例如基础网址仍为/ cities / 1234
答案 0 :(得分:2)
我不会直接在数据库中这样做。如果你使用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
答案 1 :(得分:0)
当您在页面上没有分页时,以上答案有效。 有时您必须使用分页,然后上面的答案将始终使用户返回模型的第一页。如果您必须这样做,我认为最好将您的ID与以下模型的子弹进行比较:
if request.parameters[:id] != @post.slug
return redirect_to post_path(@post, page: params[:page]), status: :moved_permanently
end
通过这种方式,用户重定向到正确的分页页面