redireciona não-www para www E http para https SOMENTE para o caminho raiz

1

Estou com dificuldades para descobrir como configurar corretamente uma regra mod_rewrite para as seguintes condições:

  • redirect non-www to www AND http to https ONLY for the root path: / ie. example.com
  • disregard anything else such as /test.html ie. example.com/test.html

Observe que estou escrevendo as regras no Apache para incluir arquivos nas regras de diretório.

Veja o que estou usando atualmente:

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Isso redireciona corretamente todas as solicitações não-www para www, mas também permite solicitações HTTP, que eu gostaria de evitar, mas apenas para / ie. example.com

Então eu tentei o seguinte:

RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^$ https://www.example.com [L,R=301]

Isso (aparentemente) funcionou, mas acabou impedindo que todos os sites de monitoramento de tempo de terceiros emitissem solicitações de HTTPS, mesmo que estivesse funcionando bem em um navegador comum. Então estou sem ideias.

    
por Ivan 24.08.2018 / 11:53

1 resposta

1

Como se viu, foi de fato um caso dos sites de monitoramento de terceiros não seguirem os redirecionamentos corretamente, como sugerido por @MrWhite. Eu resolvi isso editando o caminho de monitoramento para verificar diretamente via protocolo HTTPS, evitando assim redirecionamentos.

A regra de reescrita estava correta, afinal, o que acabei usando apenas para o caminho da raiz ser incluído no Apache por diretivas de servidor de diretório:

RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^$ https://www.example.com [L,R=301]

A propósito, para aqueles que estão sofrendo com as regras do htaccess / mod_rewrite, aqui está uma incrível ferramenta online que me ajudou muito nos testes: link

Obrigado a todos pelas suas contribuições. Muito apreciado.

    
por 25.08.2018 / 05:29