Zend Frameworkで存在しないActionのmethodを呼んだときのレスポンス

| | コメント(0) | トラックバック(0)
これなんだけど、存在しないControllerとかmethodとか呼ばれたときはチュートリアルに書いてあるようにErrorControllerでエラーをつかむようにしてて、でもindexの場合だけはviewがない扱いされちゃうからこんな感じにしてて

    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);
    }

誰か、教えてください。


トラックバック(0)

このブログ記事を参照しているブログ一覧: Zend Frameworkで存在しないActionのmethodを呼んだときのレスポンス

このブログ記事に対するトラックバックURL: http://hirop0164.s326.xrea.com/mt/mt-tb.cgi/215

コメントする


画像の中に見える文字を入力してください。

このブログ記事について

このページは、ぴろしが2008年11月 3日 23:00に書いたブログ記事です。

ひとつ前のブログ記事は「PHPで機種依存文字をチェック」です。

次のブログ記事は「Amazon EC2を無料で試す」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。