Apache có điều kiện có thể thực hiện viết lại từ một tiêu đề http tùy chỉnh không?


12

Tôi có một máy chủ apache đằng sau một bộ cân bằng tải (đơn giản amazon). Tôi muốn chuyển hướng bất kỳ lưu lượng truy cập đến không phải là 443 đến 443. Tôi muốn nó chỉ sử dụng một máy chủ ảo apache. Vì vậy, tôi đang cố gắng phát hiện ra rằng nếu tiêu đề HTTP_X_FORWARDED_PORT không phải là 443.

Tôi đã kiểm tra các tài liệu RewriteCond và nó chỉ hoạt động với một bộ tiêu đề HTTP giới hạn.

Về cơ bản những gì tôi đang làm là đây:

<VirtualHost *:80>
        ServerName www.example.com

        RewriteEngine On
        RewriteCond %{HTTP_X_FORWARDED_PORT} !=443
        RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

        ....
</VirtualHost>

Nhưng RewriteCond không nhận ra HTTP_X_FORWARDED_PORT.

Có cách nào khác để thực hiện điều này (chỉ với một Virtualhost) không? (một số loại kiểm tra tiêu đề đến?)

Cảm ơn, Lance

Câu trả lời:


13

Một chút nữa xuống RewriteCondtài liệu:

%{HTTP:header}, trong đó tiêu đề có thể là bất kỳ tên tiêu đề MIME HTTP nào

Vì vậy, bạn có thể làm điều đó, chỉ là không ở dạng hoàn toàn giống như các tiêu đề được trích xuất trước.

Thử đi:

RewriteCond %{HTTP:X-Forwarded-Port} !=443
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

1
Một ví dụ khác có địa chỉ IP trong tiêu đề được chuyển qua bởi SiteLock CDN:RewriteCond %{HTTP:X-Forwarded-For} !=123.45.67.89
Liam
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.