新手问题 如何配置 rails 使其 routes path 大小不敏感呢?

qifengle · 2014年06月19日 · 最后由 qifengle 回复于 2014年06月19日 · 2026 次阅读

例如:使其 /BLOG 自动访问 /blog,应该是需要支持所有的 path,故感觉不好在 routes 里面定义。

W3 定义的 URL 本来就是大小写敏感的,你这样做是错误的行为。

如果实在有需求,可以在 controller 里面加 before_action 把所有 URL 请求压扁

before_action :downcase_url

  def downcase_url
    if request.url != request.url.downcase
      redirect_to request.url.downcase, :status => :moved_permanently
    end
  end
...

随便写的未经测试,反正就那么个意思。

#3 楼 @blacktulip 哦~,那我弄错了... 😄

#1 楼 @blacktulip 是的,这种方式是可以的,但是每个请求都要这么一搞,感觉有点累哦。。 我发现貌似使用 rails 自带的 rotues 不好办。。

#1 楼 @blacktulip url 默认大小写确实是敏感的。这种解决方案不错。

#2 楼 @huacnlee 本来应该是敏感的,你可以访问这个: https://ruby-china.org/Topics/20052; 但为什么 https://ruby-china.org/TOPICS 是正常的,我猜是不是哪里做了设置了。

#5 楼 @qifengle 因为这样既不符合 W3 标准也不 RESTful,Rails 当然不会鼓励...

#6 楼 @outman 初略的看了下,没有找到 ruby-china 哪里写的有大写跳转到小写的 redirect_to 阿。。 cc @huacnlee

#8 楼 @qifengle 没有大小写跳转,貌似只是针对 topics 做了跳转。具体是代理服务器做的还是在代码里面做的,我也不知道。

直接在 nginx 做大小写转换。不过除了 windows 向 linux 迁移的项目好像没有多少人去关注 Nginx 实现 url 请求不区分大小写 ngx_http_lower_upper_case

#10 楼 @saiga 本来这种事情就最好交给 nginx 处理的,谢谢。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号