O problema parece estar nos sub-questionamentos, como nesta resposta: link
Como visto no log, após o primeiro redirecionamento interno correto, a segunda chamada é para uma subsequest que tenta encontrar um index.html no diretório raiz.
Eu tentei adicionar a opção -MultiViews
como na resposta que eu vinculei, mas que ainda não funcionou. O Apache ainda estava procurando na sub-requisição na raiz do site.
Então acabei com uma pequena solução "hack" que verificará se a solicitação é uma subsequação e, nesse caso, se estiver procurando por um arquivo index.*
na raiz, ele redirecionará para /cache/home.html
RewriteCond %{IS_SUBREQ} t
RewriteCond %{REQUEST_URI} ^(/index.\w+|/)?$
RewriteRule ^ /cache/home.html [L]
Isso funciona bem, no sentido de que acaba fazendo exatamente o que eu estava tentando fazer.
Vou deixar a questão aberta por mais algum tempo, porque isso ainda parece uma solução de "hack". Não sei se existe um melhor que funcione bloqueando diretamente esses sub-questionamentos.