Kod przekierowania zarówno dla strony innej niż www => www jak i przeciwnej www => non www. Brak domen i schematów na stałe w pliku .htaccess. Tak więc domena pochodzenia i wersja http / https zostaną zachowane.
PODAJ 2.4 i nowszy
NIE-WWW => WWW:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ %{REQUEST_SCHEME}://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
WWW => NIE-WWW:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^ %{REQUEST_SCHEME}://%1%{REQUEST_URI} [R=301,L]
Uwaga: nie działa na Apache 2.2, gdzie% {REQUEST_SCHEME} jest niedostępny. Aby zachować zgodność z Apache 2.2, użyj kodu poniżej lub zamień% {REQUEST_SCHEME} na stały http / https.
PODAJ 2.2 i nowszy
NIE-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]
... lub krótsza wersja ...
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 => NIE-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]
... krótsza wersja nie jest możliwa, ponieważ% N jest dostępny tylko z ostatniego RewriteCond ...
.htaccess
rozwiązania opartego na propozycji sugeruję odpowiedź na pytanie o średnicy: stackoverflow.com/a/5262044/367456