>>154
奇遇だね。今日おれも同じコトやってたw

Actionが見つからない場合はは__callが呼ばれるので
そこで404ページを出せばOKだけど
問題はControllerだよね。

省略された場合はデフォルトコントローラー(index)が呼ばれて、
ないコントローラーが呼ばれた場合デフォルトでは何も起こらない(本当は例外が投げられてるけど)じゃないですか?
Dispatcherまわりをもっとよく調べれば簡単な解決策あるかもしれないけど、とりあえず強引に解決してみた。

まずZend_Controller_Frontで
$controller->setParam('useDefaultControllerAlways',true);
で、ないコントローラーが呼ばれた場合もデフォルトのコントローラーが呼ばれるようにして

indexControllerのinit()で

$controller_name=$this->getRequest()->getControllerName();
$request_params=$this->getRequest()->getParams();
if($controller_name != $request_params['controller']){
    $this->__call();
}

とかやって実際にリクエストされたコントローラー名と呼ばれたコントローラーが違った場合は
__callを呼んで404ページを呼び出すようにした。

こんな感じじゃ駄目ですか?
もっと簡単な方法あったら伝授お願いします。

どうもDispatcherっていうのが馴染みがないせいか、イマイチよくわからなくて・・・