[英]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.