ruby-on-rails - 如果参数为大写,如何在 Rails 路由中进行 301 重定向?

标签 ruby-on-rails seo routes http-status-code-301 actioncontroller

我如何在 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 并针对访问单个记录的所有情况更通用地处理它(showedit更新)。如果您想为所有模型执行此操作,您甚至可以将过滤器放入 ApplicationController

关于ruby-on-rails - 如果参数为大写,如何在 Rails 路由中进行 301 重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13191569/

相关文章:

ruby-on-rails - 如何在 Rails 中为基于 cookie 的 session 动态设置到期时间

ruby-on-rails - Rails 查看规范 : referenced partials of inherited controllers aren't found

ruby-on-rails - 如何防止tinyMCE修改rails中的图像URL

javascript - Express 中的路由处理程序没有调用任何东西?

ruby-on-rails - Rails 4 中的 Redis 发布停止服务器线程

seo - noindex 标签是否可以防止机器人抓取页面上的链接?

Javascript 注入(inject)以改进 Flash 的 SEO

GWT 事件和地点以及 SEO

javascript - 类似 url 的 AngularJS 正则表达式路由以加载不同的 Controller 和 View

python - 如何将 url 路由到 Django 和 DRF 类的特定方法