Um amigo conseguiu que ela .htaccess
fosse trocada pelo suporte técnico de hospedagem para que seu site funcionasse com Cloudflare CDN.
.htaccess
se parece com isso:
RewriteEngine On
RewriteCond %{SERVER_PORT} !=443
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
O objetivo é redirecionar todo o tráfego para HTTPS + www.
O problema é:
Quando você vai, http://example.com
o redirecionamento para www funciona.
Mas quando você vai, https://example.com
o redirecionamento para www não funciona.
Isso ocorre por causa do RewriteCond, pelo que entendi. Faz com que a regra funcione apenas se não estiver na porta 443 (que é a porta HTTPS).
Mas essa regra parece ser necessária para o Cloudflare, porque o suporte técnico a colocou e porque sem ela o site não carrega, parece que pode entrar em algum loop de redirecionamento.
como podemos reescrever o arquivo para que funcione em todos os casos e não quebrar a integração do Cloudflare?
Sem condição, estava sempre redirecionando, por isso o suporte mandou você adicionar uma condição. No entanto, essa condição trata apenas de HTTP para HTTPS. Também deve redirecionar se o nome do host não estiver correto. Você pode adicionar uma segunda condição para cuidar de nomes de host incorretos:
Isso é incrível! Muito obrigado pela sua ajuda Stephen, isso resolveu!
Você poderia me aconselhar sobre outra coisa? No meu antigo arquivo htacess coloquei esta regra para retirar toda url do .html:
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule ^(.*)$ $1.html [L]
mas agora, quando você clica no meu site do google, ele adiciona o .html de volta (não faz isso em links internos, apenas no google) - existe uma maneira de adicionar essa regra de volta? Tentei inserir isso abaixo das novas regras, mas não funciona mais.
Obrigado! Alice (amiga de Ilan)