Kode pengalihan untuk non-www => www dan sebaliknya www => non-www. Tidak ada domain dan skema hardcoding dalam file .htaccess. Jadi domain asal dan versi http / https akan dipertahankan.
APACHE 2.4 DAN BARU
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]
Catatan: tidak berfungsi di Apache 2.2 di mana% {REQUEST_SCHEME} tidak tersedia. Untuk kompatibilitas dengan Apache 2.2 gunakan kode di bawah ini atau ganti% {REQUEST_SCHEME} dengan http / https tetap.
APACHE 2.2 DAN BARU
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]
... atau versi yang lebih pendek ...
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]
... versi yang lebih pendek tidak dimungkinkan karena% N hanya tersedia dari RewriteCond terakhir ...
.htaccess
solusi berbasis saya sarankan jawaban yang telah diajukan pada pertanyaan diametral: stackoverflow.com/a/5262044/367456