2016-02-21 18 views
6

Tôi đã thử 12 giải pháp khác nhau trên diễn đàn này và không có giải pháp nào trong số đó sẽ hoạt động. Tôi muốn tất cả các miền của mình có https://www.bắt buộc tất cả các tên miền https với www

Bây giờ tôi đang sử dụng này:

RewriteEngine on 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://www.%{HTTP_HOST}%{REQUEST_URI} 

Nhưng bây giờ khi tôi đi đến www.example.com nó chuyển hướng đến https://www.www.example.com

http://example.com hoạt động hoàn hảo nó chuyển hướng đến https://www.example.com

(gấp đôi www.)

Trả lời

7

Đó là hành vi bình thường.
Thực ra, bạn cần kiểm tra xem www có nằm trong máy chủ hay không trước khi thực hiện chuyển hướng.

Một cách dễ dàng sẽ là để phân chia các vấn đề trong hai điều kiện

RewriteEngine on 

# redirect http://www.example.com to https://www.example.com 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^www\. [NC] 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

# redirect http(s)://example.com to https://www.example.com 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule^https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
+1

điều này hoạt động hoàn hảo nhờ – Vazzilly

+0

Bạn đang chào đón! –

+0

@JustinIurman chuyển hướng HTTPS example.com sang HTTPS www.example.com bị thiếu? – Tom

0

Bạn có thể sử dụng quy tắc sau để chuyển hướng đến https://www

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://www.%1%{REQUEST_URI} [L,R] 
+0

https: //www.%7Brequest_uri%7D/ là kết quả – Vazzilly

+0

@vazzilly đã có một lỗi đánh máy nhẹ, (thiếu% trước { REQUEST_URI}) Tôi đã sửa nó. – starkeen

Các vấn đề liên quan