Mã chuyển hướng cho cả không phải www => www và ngược lại www => không phải www. Không có tên miền và sơ đồ mã hóa cứng trong tệp .htaccess. Vì vậy, tên miền gốc và phiên bản http / https sẽ được giữ nguyên.
APACHE 2.4 VÀ MỚI HƠN
KHÔNG-WWW => WWW:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ %{REQUEST_SCHEME}://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
WWW => KHÔNG WWW:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^ %{REQUEST_SCHEME}://%1%{REQUEST_URI} [R=301,L]
Lưu ý: không hoạt động trên Apache 2.2 khi% {REQUEST_SCHEME} không khả dụng. Để tương thích với Apache 2.2, hãy sử dụng mã bên dưới hoặc thay thế% {REQUEST_SCHEME} bằng http / https cố định.
APACHE 2.2 VÀ MỚI hơn
KHÔNG-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]
... hoặc phiên bản ngắn hơn ...
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 => KHÔNG 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]
... không thể có phiên bản ngắn hơn vì% N chỉ khả dụng từ RewriteCond cuối cùng ...
.htaccess
giải pháp dựa trên tôi đề nghị một câu trả lời đã được đặt ra cho câu hỏi