我使用 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/
以避免同时拥有/posts.html
and /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