2011-08-08 60 views
1

我打算把我的網站改寫成CakePHP,花了整整一週的時間學習它之後,我仍然不確定如何在CakePHP中做好自定義路由。如何使用CakePHP進行良好的自定義路由?

這就是我想要的:

  • 保持當前的URL結構是www.domain.tld/EN/dragons.html,或使用是www.domain.tld/EN /小龍,但不是WWW .domain.tld/EN /節點/ dragons.html。並且能夠在類似的路徑結構上使用控制器。

整個網站上大約有100個靜態頁面。我已經閱讀了多語言路由,我想我可以做到。我也可以通過PagesControler或自寫的NodesController來製作/ en/*或/ en /:slug路由。

我的問題是,我想能夠混合和匹配網址的控制器和沒有控制器,所以實際上我想要的是,它檢查如果:slug是slug-list的一部分,應該仍然是選項來使用該網址與控制器。

我已經爲/ en/contact和/ en /:slugid創建了路由,但似乎所有查詢都路由到了我的NodesController,即使我明確表示/ en/contact應該路由到ContactsController。

我該如何指導CakePHP保留我目前的文本結構?我讀了Cakephp書中的路線部分,但它非常短,讓我對這種路由的可能性有些不確定。如果有必要,我只需編寫一個打印所有段落的所有路由的php代碼,這樣我仍然可以編寫具有類似路徑結構的控制器路由。

+0

發佈您當前擁有的路線。 –

+0

您是否在爲您的網站使用數據庫? –

回答

0

如果webroot中存在文件(即,app/webroot/static.html),則.htaccess文件將告知Apache在將CakePHP框架加載到www.example.com/static.html的請求之前爲該文件提供該文件。

Cake以自上而下的順序加載路由,並將使用第一個匹配路由來處理請求。在你的情況下,/en/contact應該高於/en/:slugid,否則slu rule的規則將永遠贏。

如果CakePHP的路由不能完成您所要做的事情,您可以始終實現自定義路由類(book/example)。