Có cách nào rõ ràng để chuyển hướng tất cả các nỗ lực chuyển sang phiên bản HTTP: // của trang web sang HTTPS: // tương đương không?
Có cách nào rõ ràng để chuyển hướng tất cả các nỗ lực chuyển sang phiên bản HTTP: // của trang web sang HTTPS: // tương đương không?
Câu trả lời:
Tôi nghĩ rằng cách sạch nhất là như được mô tả ở đây trên IIS-aid.com . Đó chỉ là web.config và vì vậy nếu bạn thay đổi máy chủ, bạn không cần phải nhớ tất cả các bước bạn đã thực hiện với trang lỗi tùy chỉnh 403.4 hoặc các quyền đặc biệt khác, nó chỉ hoạt động.
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Giải pháp dễ dàng và sạch nhất tôi tìm thấy là
Trong Cài đặt SSL -> yêu cầu SSL
Trong trang lỗi -> Lỗi 403.4 -> Chuyển hướng đến trang web HTTPS
Trong trang lỗi -> Chỉnh sửa cài đặt tính năng ... -> Đặt lỗi chi tiết cho yêu cầu cục bộ và trang lỗi tùy chỉnh cho yêu cầu từ xa
Lợi ích là nó không yêu cầu thêm dòng mã. Nhược điểm là nó chuyển hướng bạn đến một url tuyệt đối.
Một cách rõ ràng chỉ thay đổi lược đồ URL từ http -> https và để mọi thứ khác tương đương. Nó phải là phía máy chủ để không có vấn đề về trình duyệt.
JPPinto.com có các hướng dẫn Từng bước về cách thực hiện, ngoại trừ việc họ sử dụng javascript (HttpRedirect.htmlm) thay vì chuyển hướng phía máy chủ. Vì một số lý do, tôi không thể để IE chạy javascript nếu bạn đã bật 'Hiển thị thông báo lỗi HTTP thân thiện', được bật theo mặc định. Một điều nữa với kịch bản là việc chuyển hướng đến đường dẫn không hoạt động ngay cả trong FF hoặc Chrome. Kịch bản luôn chuyển hướng đến root. (Có lẽ tôi đã bỏ lỡ điều gì đó, vì nó nên chuyển hướng đến đường dẫn.)
Vì những lý do này, tôi đã sử dụng một trang ASP cho chuyển hướng. Nhược điểm của khóa học là điều này đòi hỏi phải kích hoạt tính năng cổ điển trên máy chủ.
OpsanBlog có tập lệnh ASP và hướng dẫn hoạt động tốt với IIS6.
Tôi đã có một vài vấn đề khi sử dụng phương pháp này với IIS7. Vấn đề giao diện người dùng là chủ yếu, vì IIS7 làm cho nó thực sự dễ dàng bỏ lỡ một cái gì đó.
Trình quản lý IIS sẽ hiển thị tên tệp trong tiêu đề.
Toàn cầu
protected void Application_BeginRequest()
{
if (!Context.Request.Url.AbsoluteUri.Contains("localhost") && !Context.Request.IsSecureConnection)
Response.Redirect(Context.Request.Url.ToString().Replace("http:", "https:"));
}
Tôi sử dụng asp cổ điển (mạng nội bộ) và trên các trang yêu cầu đăng nhập, tệp đăng nhập bao gồm chuyển hướng:
if Request.ServerVariables("SERVER_PORT_SECURE") <> "1" or Request.ServerVariables("HTTPS") <> "on" then
Response.Redirect "https://" & Request.ServerVariables("SERVER_NAME") & Request.ServerVariables("URL")
end if
Điều này tất nhiên không bao gồm dữ liệu GET hoặc POST. Vì vậy, trong thực tế, nó là một chuyển hướng sạch đến trang bảo mật của bạn.