これなんだけど、存在しないControllerとかmethodとか呼ばれたときはチュートリアルに書いてあるようにErrorControllerでエラーをつかむようにしてて、でもindexの場合だけはviewがない扱いされちゃうからこんな感じにしてて
まあこれでいいかなとか思ってたら、response見たらなんと200OKが返ってきてた。
public function __call($method, $args) {
throw new Exception('Invalid method "'.$method.'" called', 404);
}
まあこれでいいかなとか思ってたら、response見たらなんと200OKが返ってきてた。
200はまずいだろと。検索エンジンのロボットがよくない勘違いしたりとか、あとほら、思い浮かばないけど、まあまずいだろ。
switch ($errors->type) {この
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
// 404 error -- controller or action not found
$this->getResponse()->setRawHeader('HTTP/1.1 404 Not Found');
$this->view->title = '404 Not Found';
$this->view->message = '該当するページは見つかりませんでした。';
break;
default:
$this->view->title = 'エラー';
$this->view->message = 'アプリケーションエラーが発生しました。';
$this->view->log = $exception->getMessage();
$this->view->trace = $exception->getTraceAsString();
break;
}
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
で、NO_ACTION扱いされないのが原因。
こんなの入れるだけで、とりあえず応急処置したけど、ほんとうはErrorハンドラでNO_ACTION判定させるように例外投げるのが正しいんだろな。
public function __call($method, $args) {
$this->getResponse()->setRawHeader('HTTP/1.1 404 Not Found');
throw new Exception('Invalid method "'.$method.'" called', 404);
}
誰か、教えてください。
コメントする