Parece que você tem 2 problemas.
- Você não tem um arquivo /index.html
- Você não tem um arquivo /404.html
Quando uma solicitação é feita, ela passa pelo processo de arquivos try. No final, ele percebe que index.html não existe e continua retornando 404. Para concluir essa tarefa, ele deve agora buscar 404.html e a solicitação é reiniciada. Ele verifica $ url (onde $ url é definido como "404.html"), depois $ url /, depois index.html novamente e entra no loop infinito.
Conforme você inseriu o loop inf, é um erro interno. Assim, apropriadamente erro 500 é servido.