Rails应用程序中的尾部斜杠行为

时间:2011-05-31 11:18:40

标签: ruby-on-rails ruby ruby-on-rails-3 nginx slash

我目前正试图模仿带有类别/文章架构的rails中的文件夹/文件行为。所以,我在路线中有这个:

 match '/:category/' => 'category#list_articles'
 match '/:category/:article.:format' => 'article#show'

基本上,请求网址是:

http://www.example.com/category/
http://www.example.com/category/article.html

一切正常。问题是它运作良好。像http://www.example.com/category这样的URL(没有尾部斜杠)也用于文章列表。它是否存在以404或更好的方式阻止此方法以重定向到带有斜杠的类别?

使用Rails 3,nginx,ruby 1.9.2。谢谢!

1 个答案:

答案 0 :(得分:2)

我不确定rails中是否有适合你的东西,但这应该是:

class TrailingSlashes                                                                                                      
  def initialize(app)
    @app = app
  end

  def call(env)
    if match = env['REQUEST_PATH'].match(/(.*)\/$/)
      response = Rack::Response.new
      response.redirect(match[1])
      response
    else
      @app.call(env)
    end
  end
end