Chuyển hướng từ HTTP sang HTTPS với PHP trên IIS
Tôi đã gặp sự cố khi chuyển hướng sang HTTPS để hoạt động trên máy chủ Windows chạy phiên bản 6 của MS Internet Information Services (IIS) . Tôi quen làm việc với Apache trên máy chủ Linux hơn nên tôi đã tìm đến Internet để được trợ giúp và đây là câu hỏi Stack Overflow có xếp hạng cao nhất khi tôi tìm kiếm “php redirect http to https” . Tuy nhiên, câu trả lời đã chọn không phù hợp với tôi.
Sau một số thử nghiệm và sai sót, tôi phát hiện ra rằng với IIS, $_SERVER['HTTPS']
được đặt thành off
các kết nối không phải TLS. Tôi nghĩ đoạn mã sau sẽ giúp ích cho bất kỳ người dùng IIS nào khác đến câu hỏi này thông qua công cụ tìm kiếm.
<?php
if (! isset($_SERVER['HTTPS']) or $_SERVER['HTTPS'] == 'off' ) {
$redirect_url = "https://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
header("Location: $redirect_url");
exit();
}
?>
Chỉnh sửa : Từ một câu trả lời Stack Overflow khác , một giải pháp đơn giản hơn là kiểm tra if($_SERVER["HTTPS"] != "on")
.