Я использую плагин will_paginate.Rails 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
, так и /posts/index.html
?
Благодаря
UPDATE
Я просто добавил
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
Спасибо, я обязательно попробую это и вернусь, чтобы обновить эту тему. – deb