我刚刚在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优化时,他们发现网址重定向产生了一种奇怪的状态。就像它来自 302 - > 301 - > 200 。应该在哪里生成 301 状态。怎么解决这个问题?如何让它生成 301 状态?
答案 0 :(得分: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])
return redirect_to search_equipments_path(request.query_parameters.merge(category_id: category.slug)) and return