zend 404处理
zend framework控制404
大概有这么几种情况:
1、假如用户输入不存在的新闻id,而url结构正确,控制器和action都存在。
则程序员需要手动跳转到一个错误页面(您要找的页面不存在),最终返回给用户的http响应码是404。
2、假如用户输入不存在 的控制器名或action名,则程序需要跳转同上那个页面,响应码也是404。
3、假如程序本身有错误,执行时应该显示错误。让程序员能够准确定位。如果部署到服务器上的时候,则应该不显示任何错误。什么响应码无关紧要。
这么多情况中,web服务器的设置如apache不需要任何改动。
php.ini则需要满足第3种情况。
为满足第2种,需要添加一个ErrorController
为了满足第一种情况,需要再编写方法,提示给用户的内容应该尽量与页面不存在的模版完全一样。
当数据库里找不到新闻时,代码类似如下
可以考虑换一个控制器//该方法模拟找不到新闻时的场景,如果 public function test2Action() { $response = $this->getResponse(); $this->_helper->viewRenderer->setNoRender(); $this->_forward('/tool/test3');//如果使用了模块,可以再带上模块名 } //该方法是 public function test3Action() { $this->_helper->viewRenderer->setNoRender(); //只要是这个页面的输出,都是404 $this->getResponse()->setRawHeader('HTTP/1.1 404 Not Found'); echo "这是新闻找不到的错误页面";//可以设法让其显示的跟前面的页面一样 }