【问题标题】:Rails redirected url is giving 302 instead of 301 status after redirecting the old url to new url在将旧 url 重定向到新 url 后,Rails 重定向 url 给出 302 而不是 301 状态
【发布时间】:2017-05-04 05:51:24
【问题描述】:

我刚刚在 rails 应用程序上实现了friendly_id。我将更改推送到生产中。之前的网址是:

https://example.com/search?category_id=1

实现friendly_id之后是这样的

https://example.com/search?category_id=name

我的控制器将旧网址重定向到新网址的代码如下:

if params[:category_id].present? and params[:category_id].to_s !~ /\D/
       category = Category.find_by_id(params[:category_id])
       return redirect_to search_equipments_path(request.query_parameters.merge(category_id: category.slug)) if category.present?

当测试人员开始测试它的 SEO 优化时,他们发现 url 重定向正在生成一个奇怪的状态。就像它从 302 -> 301 -> 200 开始一样。它应该在哪里生成 301 状态。如何解决这个问题?如何让它生成 301 状态?

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    您可以通过status 选项传递redirect_to 例如

    redirect_to search_equipments_path(request.query_parameters.merge(category_id: category.slug)), status: 301 if category.present?
    

    阅读更多here

    另外,我很好奇你为什么需要return?如果你真的需要,我认为正确的语法应该是redirect_to and return 例如

    if params[:category_id].to_s !~ /\D/ && Category.find_by_id(params[:category_id])
       redirect_to search_equipments_path(request.query_parameters.merge(category_id: category.slug)) and return
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-27
      • 2010-11-09
      • 1970-01-01
      • 2015-03-30
      • 2014-11-13
      • 2017-02-27
      • 1970-01-01
      相关资源
      最近更新 更多