当有人尝试使用旧的/:id
URL(而不是首选的/:friendly_id
链接)浏览到页面时,是否可以强制执行301重定向?
Apparently such redirections help to tell Google that you have updated the link ..因此它停止显示旧的非友好链接。
最佳答案
使用最新版本的friendly_id(在编写此答案时为5.0.3)和Rails 4,我可以在 Controller 中执行此操作:
class ItemsController < ApplicationController
before_action :set_item, only: [:show, :edit, :update, :destroy]
...
private
def set_item
@item = Item.friendly.find(params[:id])
redirect_to action: action_name, id: @item.friendly_id, status: 301 unless @item.friendly_id == params[:id]
end
end
这是
redirect_to
行的描述,逐段分割:action: action_name
会保留您要连接的 Action (可以根据所使用的before_action
进行显示,编辑,更新或销毁),以便在访问/items/1/edit
时将您重定向到/items/pretty-url/edit
id: @item.friendly_id
确保将您重定向到的URL是漂亮的URL status: 301
将重定向设置为301状态,用于SEO unless @item.friendly_id == params[:id]
确保我们不会重定向通过其漂亮网址@item
的人
关于ruby-on-rails - 如何从/:id to/:friendly_id重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21818341/