代码之家  ›  专栏  ›  技术社区  ›  deb

Rails将分页路由缓存重复页面

  •  1
  • deb  · 技术社区  · 16 年前

    我使用will-paginate插件。

    为了生成我可以缓存的路由( /posts/index/2 而不是 /posts?page=2 )我在routes.rb中添加了以下内容:

    map.connect '/posts/index/1', :controller => 'redirect', :url => '/posts/'  
    
    map.connect 'posts/index/:page',
              :controller => 'posts',
              :action => 'index',
              :requirements => {:page => /\d+/ },
              :page => nil
    

    第一行重定向 /posts/index/1 到 /posts/ 使用重定向控制器,以避免有重复的页面。

    我设置的方式有什么问题吗 'posts/index/:page' 规则?

    我想补充一下 :requirements => {:page => /\d+/ } 会确保 /post/index/ 没有 :page 参数不起作用,但 /posts/index.html 正在缓存。

    我如何重定向 /posts/index/ 到 /职位/职位/ 避免两者兼得 /posts.html 和 /文章/索引.html ?

    谢谢


    更新

    我只是加了一句

    map.connect '/posts/index/', :controller => 'redirect', :url => '/posts/'
    

    我再也不会收到重复的页面了。

    但是,我仍然不知道为什么 /文章/索引.html . 欢迎对如何使这条规则更简洁的任何解释或建议;)!

    map.connect '/posts/index/1', :controller => 'redirect', :url => '/posts/'  
    map.connect '/posts/index/', :controller => 'redirect', :url => '/posts/'
    map.connect 'posts/index/:page',
              :controller => 'posts',
              :action => 'index',
              :requirements => {:page => /\d+/ },
              :page => nil
    
    1 回复  |  直到 16 年前
        1
  •  1
  •   klew    16 年前

    Here 我找到了你问题的可能答案。

    我想补充一下 :page => nil 可以覆盖以前的条件。所以当你移除这个部分时,它可能会像你预期的那样工作。

    推荐文章