Tôi đã nhìn thấy rất nhiều người gặp phải các vòng chuyển hướng khi cố sử dụng các tệp .htaccess để di chuyển từ http đến https. Và có rất nhiều câu trả lời khác nhau để giải quyết vấn đề này. Một số người nói:
ReWriteCond %{SERVER_PORT} 80
OR
RewriteCond %{HTTPS} off
OR
RewriteCond %{HTTPS} !on
OR (as above)
RewriteCond %{HTTP:X-Forwarded-Proto} !https
OR EVEN
RewriteCond %{HTTP:X-Forwarded-SSL} =off
nhưng không có cách nào trong số này phù hợp với tôi. Cuối cùng tôi đã khám phá ra sự thật cơ bản, rằng các máy chủ khác nhau được cấu hình theo nhiều cách khác nhau và tất cả chúng đều cung cấp các biến máy chủ khác nhau.
Nếu không có cách nào ở trên phù hợp với bạn, thì mẹo là sử dụng PHP để tìm ra biến env mà máy chủ cụ thể gửi cho bạn khi bạn truy cập trang http và biến env nào sẽ gửi cho bạn khi bạn truy cập trang https và sau đó bạn có thể sử dụng biến đó để thực hiện chuyển hướng. Chỉ cần tạo một tệp PHP (chẳng hạn như showphpvars.php) trên máy chủ của bạn với mã này:
<?php phpinfo() ?>
và sau đó xem bằng trình duyệt. Tìm phần của biến với _SERVER ["HTTP_HOST" (vv)] trong đó, và có một trinh sát xung quanh cho một thay đổi cho http so với https. Tôi hóa ra là một biến được gọi là SSL được đặt thành 1 khi sử dụng https và không được đặt ở tất cả khi sử dụng http.
Tôi đã sử dụng biến đó để chuyển hướng đến https bằng PHP, rất thú vị hơn sử dụng htaccess, nhưng tôi nghĩ rằng bất kỳ biến _SERVER nào cũng có thể được truy cập bằng htaccess, nếu bạn muốn tiếp tục sử dụng . Chỉ cần sử dụng tên bên trong dấu ngoặc kép, không có bit _SERVER [""] mà PHP thêm vào.
Nguồn
2015-03-14 17:08:24
URL nào gây ra vòng lặp chuyển hướng? –
@JonLin Tất cả URL – Debiprasad
Tất cả đều hoạt động tốt cho tôi trong tệp htaccess trống. Bạn có chắc chắn chuyển hướng https của bạn không thiếu 'www'? –