Também estou respondendo a isso, porque tenho certeza de que o problema está relacionado a como mod_dir.c funciona internamente e eu acho que é um bug .
Se um recurso não puder ser mapeado para o sistema de arquivos local, a função fixup_dflt() será executado, usando o FallbackResource para determinar qual documento deve ser carregado.
No entanto, quando um recurso pode ser mapeado para o sistema de arquivos local e é um diretório, ele tentará resolver o documento executando fixup_dir() ; essa função percorre a lista de valores DirectoryIndex até encontrar o primeiro documento adequado.
No meu caso, a configuração tem uma lista vazia de DirectoryIndex valores, então fixup_dir() falhará e um 404 será retornado.
O seguinte patch funciona para mim ( PR ):
static int dir_fixups(request_rec *r)
{
if (r->finfo.filetype == APR_DIR) {
- return fixup_dir(r);
+ if (fixup_dir(r) != OK) {
+ /* use fallback */
+ return fixup_dflt(r);
+ }
+
+ return OK;
}
else if ((r->finfo.filetype == APR_NOFILE) && (r->handler == NULL)) {
/* No handler and nothing in the filesystem - use fallback */
return fixup_dflt(r);
}
return DECLINED;
}
Ele basicamente tenta fixup_dflt() depois que fixup_dir() falhou.
Atualização 2015-04-21
Uma correção foi enviada ao projeto, programada para 2,5; pode ser portado para 2.4 também.
Atualização 2015-05-18
A correção foi revertida porque:
[...] it [at least] causes
FallBackResourceto kick in beforemod_autoindexmight have kicked in.
Ainda estou tentando descobrir como evitar esse tipo de situação.