【问题标题】:Handling a redirect from an old permalink to a new one处理从旧永久链接到新永久链接的重定向
【发布时间】:2015-05-17 18:58:30
【问题描述】:

我的 rails 4 应用中有一个 Page 模型。它有一个 :permalink 属性,当有人访问“mysite.com/pages/page-name”时,控制器会找到带有“page-name”作为永久链接的页面,然后显示视图。

pages_controller.rb:

def show
  @page = Page.find_by_permalink!(params[:id])
end

网站上线几个月后,我想更改某个页面的永久链接,但我不想丢失所有传入的链接。我想我会这样做。

首先,我会将_colum :new_permalink 添加到 Page 模型中。然后,如果这个 :new_permalink 属性不是 nil 或空白,它将在控制器中拉出一个新页面,如下所示:

def show
  @page = Page.find_by_permalink!(params[:id])
  if !@page.new_permalink.blank?
    @page = Page.find_by_permalink!(@page.new_permalink)
  end
end

这可行,但浏览器中的网址仍显示旧网址。我想这可能还不错,但我想我希望它实际上转发到新页面。也许,而不是“new_permalink”,它应该是一个新的 url 并且实际上做了一个重定向?您对此的最佳解决方案是什么?我可以将其设为 301 重定向吗?

【问题讨论】:

    标签: ruby-on-rails redirect permalinks


    【解决方案1】:

    是的,您应该使用 301 重定向,以便用户和搜索引擎都将浏览器发送到正确的位置。

    def show
      @page = Page.find_by_permalink!(params[:id])
      if @page.new_permalink.present?
        redirect_to page_path(@page.new_permalink), status: :moved_permanently
        return
      end
    end
    

    【讨论】:

      猜你喜欢
      • 2012-04-18
      • 1970-01-01
      • 2017-04-19
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 2016-02-11
      • 2017-12-20
      相关资源
      最近更新 更多