redirecionamento de htaccess para não-www, http e https

Eu gostaria de ter:

  • http://example.com redireciona para: http://www.example.com
  • https://example.com redirecione para: https://www.example.com

E qualquer coisa que seja http://whatever.example.com NÃO anexe o www como http://www.whatever.example.com .

Experimente esta regra:

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

Aqui está uma explicação:

  1. A primeira condição testa se o campo de header HTTP Host possui o formato necessário (contém exatamente um período).
  2. A segunda condição testa se o valor concatenado do valor da variável HTTPS (valores on e off ) e s (so ou ons ou offs ) é igual a ons e captura os s . Isso significa que, se %{HTTPS}s avaliado como ons , o primeiro grupo correspondente será s e vazio, caso contrário.
  3. A regra corresponderá a todas as solicitações, já que todas as sequências têm início (marcadas com ^ ) e as redireciona para o valor avaliado de http%1://www.%{HTTP_HOST}%{REQUEST_URI} se as duas condições forem verdadeiras. Onde %1 é o primeiro grupo correspondente da condição anterior ( s se HTTPS e vazio de outra forma), %{HTTP_HOST} é o host HTTP da solicitação e %{REQUEST_URI} é o caminho de URL absoluto que foi solicitado.

Tente adicionar este RewriteCond ao seu arquivo .htaccess para capturar apenas SSL – e faça o mesmo para o http padrão.

 RewriteCond %{HTTPS} on