繁体   English   中英

将旧 url 重定向到新 url 后,Rails 重定向 url 给出 302 而不是 301 状态

[英]Rails redirected url is giving 302 instead of 301 status after redirecting the old url to new url

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

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

实现friendly_id后是这样的

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

我用于将旧 url 重定向到新 url 的控制器代码如下:

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状态?

您可以使用redirect_to例如传递status选项

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

在这里阅读更多

另外,我很好奇你为什么需要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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM