ruby-on-rails - 如何从/:id to/:friendly_id重定向

标签 ruby-on-rails

当有人尝试使用旧的/: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/

    相关文章:

    ruby-on-rails - 将Rails与Oracle一起使用时,为什么会出现“无监听器”错误?

    ruby-on-rails - Rails 3.1 + Heroku Cedar - 未提供静态图像资源

    ruby-on-rails - 删除 Rabl 中的空哈希值

    jquery - Rails 为 .each do |x| 生成图表使用 highcharts 或任何其他图表 API

    javascript - 允许用户将我的内容嵌入他们的网站(如博客)——rails 4

    ruby-on-rails - 无效链接在集成测试中崩溃,而不是产生 flash 错误消息

    ruby-on-rails - 如何最好地表示 Rails 应用程序数据库中的角色?

    ruby-on-rails - 使用 Mocha 测试函数是否被调用

    ruby-on-rails - 将 unix 十六进制时间戳转换为 ruby​​ 日期时间

    ruby-on-rails - 我们如何在 ruby​​ 中将每个字节编码为两个十六进制字符?