Zend Framework:如何处理“没有匹配请求的路由”错误?

时间:2012-11-01 03:51:52

标签: regex exception zend-framework bootstrapping zend-route

在Bootstrap.php中,我有一些使用Zend_Controller_Router_Route_Regex的自定义路由。 除非用户在地址栏中键入错误的链接,否则一切正常。

前:

http://mysite/en/1-some-article.html =>这是一个与Bootstrap中的ROUTE匹配的有效链接。

但是当用户输错字错误时:

http://mysite/en/1-some-article.**html'** or http://mysite/en/1-some-article.**hhtml**,它们与Bootstrap中的任何ROUTE都不匹配,然后Zend Framework抛出一个异常,如:没有路由匹配请求

无论如何都要处理它,比如重定向到“无匹配路线”的自定义页面?

任何帮助将不胜感激。谢谢你提前!

配置(来自以下评论

[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_"

1 个答案:

答案 0 :(得分: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)。