我使用了will_paginate插件。
在oder中生成我可以缓存的路由(/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/
以避免同时拥有/posts.html
和/posts/index.html
?
由于
更新
我只是添加了
map.connect '/posts/index/', :controller => 'redirect', :url => '/posts/'
而且我不再获得重复的页面了。
但是,我仍然不明白为什么我会/posts/index.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