在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_"
答案 0 :(得分:0)
要使用ErrorController
,您需要将前端控制器throwExceptions
属性设置为false
。将其放在[production]
配置部分
resources.frontController.params.throwExceptions = 0
请参阅http://framework.zend.com/manual/1.12/en/zend.controller.exceptions.html和http://framework.zend.com/manual/1.12/en/zend.controller.plugins.html#zend.controller.plugins.standard.errorhandler.fourohfour。
我在上面的评论中提到过这一点,但您似乎已经错过了(displayExceptions
设置为false
而不是throwExceptions
)。