2013-01-14 42 views
0

最後連接上路由器鋰:爲什麼鋰的(li3)最後路線沒有抓住所有東西?

Router::connect('/{:controller}/{:action}/{:args}', 'Main::end'); 

如果所有路由匹配嗎?沒有?但是,而不是執行我的主:: end方法(誰只是出境(「有一些文字,測試......」)),鋰給我一個調度例外T_T:

lithium\action\DispatchException (code 404) 
Controller `Sdsa` not found. 
path_to_my_root/libraries/lithium/action/Dispatcher.php: 239 

我」什麼米做錯了嗎?

+0

最後一個路由器條目匹配一個控制器和一個函數。所以'/ User/List'將與該用戶控制器和該控制器中的List功能相匹配。你上面得到的是404,並改變你重寫發送給用戶的404消息。 – Nils

+0

但我作爲第二個參數通過主::結束控制器 - >行動...順便說一句......我解決了這個問題,我會發布解決方案! – cl0udw4lk3r

回答

0

通過使用標準正則表達式解決了我的自我問題:

Router::connect('/(.*)', 'Main::end'); 

,將處理所有的請求主::結束。

正如尼爾斯說,我的實際解決方案是因爲缺乏404頁的處理不夠完美......

,因爲我嘗試使用Backbone.js的,也許我可以處理404頁客戶端一樣這個: How to have a fallback route to catch unknown pages in backbone.js

+0

請注意,不發送404:s和其他錯誤可能會讓用戶感到困惑。例如,如果他們拼錯了一個URL。另外,如果頁面被移除,搜索引擎將會感到困惑,因爲您沒有返回缺少頁面的404。如果這樣做創建一個404,那麼你可以編輯'views \ layouts \ error.html.php'。以下是Google關於404/410(和軟404:s)的說明http://googlewebmastercentral.blogspot.se/2011/05/do-404s-hurt-my-site.html – Nils

+0

問題是我正在嘗試用鋰來實現Backbone.js,現在我只需要把home作爲主頁(而不是Main :: end,現在是Main :: home ...),但是你說的是對的,也許我應該從或者在所有鋰佈局上插入backbone.js ... – cl0udw4lk3r

+0

@ cl0udw4lk3r:通過在路由中添加適當的「{:type}」佔位符,鋰響應可以非常容易地呈現爲JSON對象。首選的方式是[content-negotiating](http://sphere.lithify.me/p/Li3-Advent-Day-3) – Oerd

相關問題