Código de redirecionamento para não-www => www e oposto a www => não-www. Não há domínios codificados e esquemas no arquivo .htaccess. Portanto, o domínio de origem e a versão http / https serão preservados.
APACHE 2.4 E MAIS NOVO
NÃO-WWW => WWW:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ %{REQUEST_SCHEME}://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
WWW => NÃO WWW:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^ %{REQUEST_SCHEME}://%1%{REQUEST_URI} [R=301,L]
Nota: não está funcionando no Apache 2.2 onde% {REQUEST_SCHEME} não está disponível. Para compatibilidade com o Apache 2.2, use o código abaixo ou substitua% {REQUEST_SCHEME} por http / https fixo.
APACHE 2.2 E MAIS NOVO
NÃO-WWW => WWW:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
... ou versão mais curta ...
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|offs
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
WWW => NÃO WWW:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
... versão mais curta não é possível porque% N está disponível apenas no último RewriteCond ...
.htaccess
solução baseada sugiro uma resposta que foi colocada sobre a questão diametral: stackoverflow.com/a/5262044/367456