Sua pergunta já tem a resposta: ISTO faz o que você está tentando alcançar:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent "/" "https://example.com/"
</VirtualHost>
No entanto, ServerName https://example.com está errado: você não deve incluir o protocolo aqui, nem no seu ServerAlias . É <VirtualHost *:443> an que torna isso um host virtual HTTPS. Se você já teve https://example.com para trabalhar com essa configuração, provavelmente é porque você também tem ServerAlias example.com mais tarde na configuração, mas você não deve especificar essas diretivas duas vezes no mesmo bloco <VirtualHost> .
Isso me faz pensar se esse arquivo sites-available config é sempre usuário, por exemplo
- Você o habilitou (usando
a2ensiteou manualmente criando um link simbólico emsites-enabled)? - Você reiniciou seu Apache depois dessa modificação?
(BTW. Como http://www.example.com redireciona para canonical https://example.com/ , pode ser uma boa idéia redirecionar https://www.example.com/ para o mesmo local também.)