2012-11-01 36 views
0

在Bootstrap.php中我有一些使用Zend_Controller_Router_Route_Regex的自定義路由。 除非用戶在地址欄中輸入錯誤的鏈接,否則一切正常。Zend Framework:如何處理「沒有路由匹配請求」的錯誤?

例:

http://mysite/en/1-some-article.html =>這是在引導路線相匹配的有效鏈路。

但是,當用戶輸入了錯字的錯誤,如:

http://mysite/en/1-some-article.**html'** or http://mysite/en/1-some-article.**hhtml**,他們不匹配引導任何路線,然後Zend框架拋出一個異常,如:沒有路由匹配請求

反正有處理它就像重定向到「無匹配路線」的自定義頁面一樣?

任何幫助將不勝感激。感謝您的提前!

配置(從下面評論)

[production] 
phpSettings.display_startup_errors = 1 
phpSettings.display_errors = 1 
phpSettings.date.timezone = "Europe/London" 
;includePaths.library = APPLICATION_PATH "/../library" 
bootstrap.path = APPLICATION_PATH "/Bootstrap.php" 
bootstrap.class = "Bootstrap" 
appnamespace = "" 
;resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" 
resources.frontController.params.displayExceptions = 0 
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" 
resources.modules = "" 
autoloaderNamespaces.Fxml = "Mycms_" 
autoloaderNamespaces.Fxml = "Fxml_" 
+0

在您的生產環境中,您可以將'resources.frontController.params.throwExceptions'設置爲false。這會導致錯誤落入'ErrorController'。請參閱http://framework.zend.com/manual/1.12/en/zend.controller.plugins.html#zend.controller.plugins.standard.errorhandler.fourohfour和http://framework.zend.com/manual/1.12 /en/zend.controller.exceptions.html – Phil

+0

@Phil:我的application.ini中有這行,但沒有任何改變。 –

+0

而您正在使用prod設置運行您的應用程序? – Phil

回答

0

爲了使用ErrorController的,你需要在前端控制器throwExceptions屬性設置爲false。把這個在您的[production]配置部分

resources.frontController.params.throwExceptions = 0 

http://framework.zend.com/manual/1.12/en/zend.controller.exceptions.htmlhttp://framework.zend.com/manual/1.12/en/zend.controller.plugins.html#zend.controller.plugins.standard.errorhandler.fourohfour

我在上面的評論中提到過這個,但你似乎錯過了它(你有displayExceptions設置爲false而不是throwExceptions)。

+0

是的,我把這行寫入我的application.ini中,但是也沒有改變。系統不斷拋出異常。 –

相關問題