
todos. Eu tenho um problema de sintaxe. Tentei seguir outras fontes, mas simplesmente não está funcionando.
Criei com sucesso um redirecionamento incondicional de HTTP para HTTPS. Vá parahttp://www.robjvargas.com, acabe em HTTPS. Tudo muito bem aí.
Mas agora meu certificado parece precisar de HTTP. Ele está usando Let's Encrypt e, portanto, precisa de renovação a cada 90 dias. Com o redirecionamento em vigor, uma simulação falha. Com o redirecionamento desativado, a simulação é bem-sucedida.
Então tentei colocar um RewriteCond para isentar o tráfego de renovação do certificado:
# HTTP to HTTPS redirect
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{Request_URI} !^./acme-challenge/*
RewriteRule (.*) https://www.robjvargas.com$1 [R,L]
Só que não funciona. Acho que estou perdendo algo digno de um tapa na testa quando vejo, mas não estou vendo. Com o código acima, o redirecionamento HTTP para HTTPS ainda parece universal. Então, claramente, o RewriteCond está incorreto. O período anterior ao URI provavelmente está errado, mas tentei com e sem ele.
Também coloquei o URI completo no RewriteCond, mas isso também não o isentou.
Estou perto. Eu não recebo nenhum erro. Simplesmente nunca atende à condição pretendida.
o que estou perdendo?
Responder1
Mas agora meu certificado parece precisar de HTTP.
isto não está correto. Estou renovando pessoalmente por https. Para que isso funcione, no entanto, você precisa permitir o acesso ao URI do desafio em seu https VirtualHost, copiando a parte relevante do http VirtualHost. Se você não pode ou não quer fazer isso, veja como fazê-lo funcionar em http com o redirecionamento condicional que você começou a escrever.
O problema é que seu regex atual corresponderia ao uri do desafio. De acordo comDocumentos Apacheo REQUEST_URI começa com / então você deve procurar o uri do desafio assim: ^\/\.well-known\/.*$
. Isso corresponderá ao URI do desafio (http://example.com/.well-known/acme-challenge).
Todos juntos:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^\/\.well-known\/.*$
RewriteRule (.*) https://www.robjvargas.com/$1 [R,L]
Em caso de problemas futuros, use isto:testador de htaccess
Responder2
No meu servidor Virtualmin, a linha a seguir resolveu.
RedirectMatch ^/(?!.well-known)(.*)$ https://phpmyadmin.example.com/$1