Zend_Controller é o coração do sistema MVC
            do Zend Framework. MVC significa Model-View-Controller
            e é um padrão de projeto voltado para a separação da lógica de aplicação da lógica
            de visualização. Zend_Controller_Front implementa o padrão
            Front
            Controller, no qual todos os pedidos são interceptados pelo controlador
            frontal e despachados individualmente para ações baseadas no
            URL requerido.
        
            O sistema Zend_Controller foi construído com a extensibilidade
            em mente, tanto por derivação das classes existentes, como escrevendo novas classes
            que implementam as várias interfaces e classes abstratas que formam a fundação da
            família de classes controladoras, ou escrevendo plugins ou auxiliadores de ação para
            aumentar ou manipular a funcionalidade do sistema.
        
Se você necessita de informações mais detalhadas, veja as seções seguintes. Se você quiser apenas começar rápido, continue lendo.
O primeiro passo é criar sua estrutura de arquivos. A estrutura típica é a seguinte:
application/
    controllers/
        IndexController.php
    models/
    views/
        scripts/
            index/
                index.phtml
        helpers/
        filters/
html/
    .htaccess
    index.php
        
                No seu servidor web, defina seu documento raiz para o diretório
                html/ da estrutura de arquivos acima mencionada.
            
                Edite o arquivo html/.htaccess acima para ficar como:
            
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
            Saiba mais sobre o mod_rewrite
As regras de reescrita acima permitem o acesso a qualquer arquivo no documento raiz de seu host virtual. Se houver arquivos que você não quer expor desta maneira, você pode ser mais restritivo em suas regras. Vá até o site do Apache para aprender mais sobre o mod_rewrite.
Se estiver usando o IIS 7.0, utilize o seguinte como sua configuração de reescrita:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
     <system.webServer>
         <rewrite>
             <rules>
                 <rule name="Imported Rule 1" stopProcessing="true">
                     <match url="^.*$" />
                     <conditions logicalGrouping="MatchAny">
                         <add input="{REQUEST_FILENAME}"
                             matchType="IsFile" pattern=""
                             ignoreCase="false" />
                         <add input="{REQUEST_FILENAME}"
                             matchType="IsDirectory"
                             pattern="" ignoreCase="false" />
                     </conditions>
                     <action type="None" />
                 </rule>
                 <rule name="Imported Rule 2" stopProcessing="true">
                     <match url="^.*$" />
                     <action type="Rewrite" url="index.php" />
                 </rule>
             </rules>
         </rewrite>
     </system.webServer>
</configuration>
            As regras acima irão encaminhar os pedidos de recursos existentes (links simbólicos existentes, arquivos não vazios, ou diretórios não vazios) nesse sentido, e todos os outros pedidos para o controlador frontal.
Nota
As regras de reescrita acima são para o Apache, para exemplos de regras de reescrita de outros servidores web, consulte a documentação do roteador.
                O arquivo de inicialização é a página onde passam todas as requisições
                -- html/index.php no caso. Abra o arquivo
                html/index.php em um editor de sua escolha
                e adicione o seguinte:
            
Zend_Controller_Front::run('/path/to/app/controllers');
            Isto irá instanciar e despachar o controlador frontal, que irá encaminhar as requisições para os controladores de ação.
                Antes de discutir sobre os controladores de ação, você deve primeiro entender como
                as requisições são roteadas no Zend Framework. Por padrão, o primeiro seguimento
                de um caminho de um URL aponta para um controlador, o segundo
                para uma ação. Por exemplo, dado o URL
                http://framework.zend.com/roadmap/components, o caminho é
                /roadmap/components, que irá apontar para o controlador
                roadmap e para a ação components. Se
                nenhuma ação for informada, a ação index é assumida, e se
                nenhum controlador for informado, o controlador index é
                assumido (seguindo a convenção do Apache que mapeia um
                DirectoryIndex automaticamente).
            
                O despachador do Zend_Controller toma o valor do
                controlador e mapeia-o para uma classe. Por padrão, ele pega o nome do
                controlador, com a primeira letra em maiúsculo, e acrescenta a palavra
                Controller. Sendo assim, em nosso exemplo acima, o
                controlador roadmap é mapeado para a classe
                RoadmapController.
            
                Semelhantemente, o valor da ação é mapeado para um método da classe do controlador.
                Por padrão, o valor é transformado em letras minúsculas, e a palavra
                Action é acrescentada. Sendo assim, em nosso exemplo acima, a
                ação components torna-se
                componentsAction(), e o método final chamado é
                RoadmapController::componentsAction().
            
                Então, seguindo em frente, vamos agora criar um controlador de ação padrão e um
                método de ação. Como mencionado anteriormente, o controlador padrão e a ação são
                ambos chamados index. Abra o arquivo
                application/controllers/IndexController.php, e introduza
                o seguinte:
            
/** Zend_Controller_Action */
class IndexController extends Zend_Controller_Action
{
    public function indexAction()
    {
    }
}
            
                O auxiliar de ação ViewRenderer é
                habilitado por padrão. Isto significa que apenas definindo um método de ação
                simples e o script de visão correspondente, você terá o seu conteúdo mostrador
                imediatamente. Por padrão, Zend_View é usado como a camada
                de Visualização do MVC. O ViewRenderer
                faz alguma mágica, e usa o nome do controlador (ex.: index)
                e o nome da ação atual (ex.: index) para determinar qual
                modelo mostrar. Por padrão, modelos terminam com a extensão
                .phtml, então isto significa que, no exemplo acima o modelo
                index/index.phtml será mostrado. Adicionalmente, o
                ViewRenderer automaticamente assume que o diretório
                views/, que está no mesmo nível que do diretório do
                controlador, será o diretório base de visualização, e que o atual script de
                visualização estará no subdiretório views/scripts/, Sendo
                assim, o modelo mostrado é encontrado em
                application/views/scripts/index/index.phtml.
            
                Com mensionado na seção
                anterior, scripts de visualização são encontrados em
                application/views/scripts/; O script padrão para o
                controlador e ação padrão está em
                application/views/scripts/index/index.phtml. Crie este
                arquivo e escreva nele algum HTML:
            
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Meu primeiro aplicativo em Zend Framework</title>
</head>
<body>
    <h1>Olá, Mundo!</h1>
</body>
</html>
        
                Por padrão, o plugin
                do manipulador de erro é registrado. Este plugin espera que um controlador
                para manipular erros exista. Por padrão, ele assume um
                ErrorController no módulo padrão com um método
                errorAction():
            
class ErrorController extends Zend_Controller_Action
{
    public function errorAction()
    {
    }
}
            
                Assumindo a estrutura de diretório já discutida, este arquivo estará em
                application/controllers/ErrorController.php. Você também
                precisará criar o script de visualização em
                application/views/scripts/error/error.phtml; o conteúdo
                do exemplo parecerá com:
            
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Erro</title>
</head>
<body>
    <h1>Ocorreu um erro</h1>
    <p>Ocorreu um erro; por favor, tente novamente mais tarde.</p>
</body>
</html>
        
                Com o seu primeiro controlador e visualizador em suas mãos, você agora pode abrir
                o seu navegador e navegar até o site. Assumindo que o seu domínio é
                example.com, qualquer dos seguintes URLs
                irão mostrar a página que acabamos de criar:
            
- 
                    
http://example.com/ - 
                    
http://example.com/index - 
                    
http://example.com/index/index 
Agora você está pronto para iniciar a criação de mais controladores e metódos de ação. Parabéns!