我如何在 routes.rb 中执行 301 重定向,条件是如果某些参数是大写的,那么重定向到小写的 URL。
我知道我可以让 URL 不区分大小写,但这不是我想要的。
例如,如果用户点击这个 URL /公司/XYZ 或/公司/Xyz
他应该被重定向到 /公司/xyz
这是否可以通过 301 重定向实现,还是我必须使用 302 重定向。
谢谢
最佳答案
我不知道如何在 routes.rb
中执行此操作,但我也不确定这是正确的位置。我会把它放到 Controller Action 中。像这样的东西:
class CompaniesController < ApplicationController
def show
company_id = params[:id]
if company_id =~ /\A[[:upper:]]+\z/
redirect_to company_path(company_id.downcase), status: :moved_permanently
end
# Handle normal process flow.
end
end
如果你愿意,你可以设置一个 before_filter
并针对访问单个记录的所有情况更通用地处理它(show
,edit
,更新
)。如果您想为所有模型执行此操作,您甚至可以将过滤器放入 ApplicationController
。
关于ruby-on-rails - 如果参数为大写,如何在 Rails 路由中进行 301 重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13191569/