En una ocasión hice algo similar, pero lo solucione con dos .htaccess
Manteniendo la estructura de Zend
Uno en el root
Código:
#SetEnv APPLICATION_ENV development
RewriteEngine On
RewriteRule ^\.htaccess$ – [F]
RewriteCond %{REQUEST_URI} =''
RewriteRule ^.*$ /public/index.php [NC,L]
RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ /public/$1
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ – [NC,L]
RewriteRule ^public/.*$ /public/index.php [NC,L]
Y el otro en la carpeta public
Código:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
Las carpetas me permitían protegerlas desde el panel de control del server.
Saludos,