Может быть, это немного, но в первом случае вы можете попробовать Router :: connect ('/: controller / about', array ('action' => 'display')) ;? Кажется, я помню, что у меня были некоторые похожие проблемы с моими маршрутами, и это, возможно, помогает, хотя я не могу вспомнить, почему.
Что касается второго вопроса, разве вы не можете просто переделать функцию представления, чтобы она принимала параметр $ slug вместо $ id, и найти нужную запись портфолио, выполнив поиск по слагу? Или проверьте, является ли параметр is_numeric, и найдите идентификатор, если он есть, или слаг, если это не так ...