Я не уверен насчет лучшего способа, но я бы сначала поставил маршрутизацию на маршрутах php вроде:
Router::connect('/resources.php', array(
'controller' => 'resources',
'action' => 'index'
)
);
(и так далее)
После этого проверьте при запуске функции действия, какой маршрут использовался, и если использовался маршрут * .php, выполните перенаправление 301:
$this->redirect(array('controller' => 'resources', 'action' => 'index'), 301);
Полагаю, есть и более "умный" способ реализовать это, но это была идея. (использование before_filter и т. д.)