Code de redirection pour non-www => www et opposé www => non-www. Pas de domaines et de schémas de codage en dur dans le fichier .htaccess. Le domaine d'origine et la version http / https seront donc préservés.
APACHE 2.4 ET PLUS RÉCENT
NON-WWW => WWW:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ %{REQUEST_SCHEME}://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
WWW => NON-WWW:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^ %{REQUEST_SCHEME}://%1%{REQUEST_URI} [R=301,L]
Remarque: ne fonctionne pas sur Apache 2.2 où% {REQUEST_SCHEME} n'est pas disponible. Pour la compatibilité avec Apache 2.2, utilisez le code ci-dessous ou remplacez% {REQUEST_SCHEME} par http / https fixe.
APACHE 2.2 ET PLUS RÉCENT
NON-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 version plus courte ...
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 => NON-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]
... une version plus courte n'est pas possible car% N est disponible uniquement depuis le dernier RewriteCond ...
.htaccess
solution basée, je suggère une réponse qui a été posée sur la question diamétrale: stackoverflow.com/a/5262044/367456