Minha solução para parar de exibir o conteúdo do diretório como lista e exibir o erro 404 é simples. Crie o arquivo .htaccess no diretório raiz do seu projeto e escreva quais diretórios devem ser protegidos.
Estrutura de diretórios
- your_root_directory
- .htaccess
- 404.html
- index.html
- app
- other files I do not want to show
- models
- other files I do not want to show
.htaccess
RewriteEngine On
RewriteRule ^app/ - [R=404,L]
RewriteRule ^models/ - [R=404,L]
ErrorDocument 404 /your_root_directory/404.html
A segunda linha do .htaccess não permite o acesso a itens de lista no diretório de aplicativos e em todos os seus sub-diretórios.
A terceira linha do .htaccess não permite o acesso a itens de lista no diretório de modelos e todos os seus sub-diretórios.
A quarta linha .htaccess define nosso próprio erro 404 (se você não deseja mostrar o erro padrão do apache).
Lembre-se de limpar o cache do seu navegador ao trabalhar com o htaccess.