Tôi gặp sự cố khi sử dụng mod_rewrite để buộc chuyển hướng các yêu cầu HTTP sang HTTPS bằng Apache 2.2.22 trên Ubuntu Server 12.04.Chuyển hướng HTTP sang HTTPS bằng Apache
My/etc/apache2/sites-available/tập tin mặc định như sau:
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>
Người dẫn chương trình HTTPS được định nghĩa trong mặc định-ssl trong cùng thư mục.
Truy cập địa chỉ IP cục bộ của máy chủ, chuyển hướng dường như hoạt động tốt. Tuy nhiên, truy cập nó thông qua FQDN, nó không. Sử dụng FQDN, trang web có sẵn tại cổng 5443, được ánh xạ trong tường lửa đến 443 trên máy chủ, vì vậy có lẽ có liên quan đến vấn đề này. Tôi không thể chỉ sử dụng cổng 443 trực tiếp, vì nó đang được sử dụng trên địa chỉ IP này bởi một máy chủ khác.
Tiếp tục làm rõ, sau đây là liên kết hợp lệ:
https://website:5443
https://192.168.200.80:443
Các chuyển hướng làm việc ở đây:
http://192.168.200.80
Nhưng sau đưa ra một Bad Request 400, và đây là nơi chuyển hướng là cần thiết :
http://website:5443/
"Trình duyệt của bạn đã gửi yêu cầu mà máy chủ này không thể hiểu được. Lý do: Bạn đang nói HTTP thuần tuý với cổng máy chủ hỗ trợ SSL. Thay vì sử dụng lược đồ HTTPS để truy cập URL này, vui lòng. "
Điều này có vẻ như chặng đường dài để làm một điều đơn giản, có thể bạn có một lý do cho nó mặc dù. Trong anycase, bạn nên kiểm tra mod_proxy: http://httpd.apache.org/docs/2.0/mod/mod_proxy.html cùng với câu hỏi SO tương đối này: http://stackoverflow.com/questions/1162375/apache-port -Ủy quyền. –