Theo như tôi có thể nói, điều này không dễ thực hiện với bất kỳ quy tắc / trình xử lý nào được vận chuyển với Cầu tàu 6.
Các RedirectPatternRule
kết quả khớp trên target
đường dẫn trong máy chủ Jetty và không phải là URI đầy đủ, vì vậy quy tắc của bạn không bao giờ khớp.
Bạn có thể thay đổi nó thành:
<New id="redirect" class="org.mortbay.jetty.handler.rewrite.RedirectPatternRule">
<Set name="pattern">/*</Set>
<Set name="location">https://foobar.com</Set>
</New>
Tuy nhiên, điều đó có 2 vấn đề:
- Nó sẽ chuyển hướng tất cả các yêu cầu (thậm chí
https
yêu cầu)
- Nó không đưa URL được yêu cầu vào tài khoản (nó luôn chuyển hướng
location
theo như được chỉ định và bỏ qua mọi thứ được khớp bởi pattern
)
Bạn có thể khắc phục vấn đề đầu tiên với một số mánh khóe.
Bạn có thể gói RewriteHandler
trong a ContextHandler
và trình xử lý ngữ cảnh cho phép bạn chỉ định trình kết nối nào sẽ xử lý các yêu cầu từ ( setConnectorNames
). Vì vậy, bạn có thể sử dụng điều đó để viết lại chỉ áp dụng cho các yêu cầu trên (các) trình kết nối http.
Tôi không thể nghĩ ra cách khắc phục vấn đề thứ hai.
Tôi nghĩ rằng đặt cược tốt nhất của bạn sẽ viết quy tắc chuyển hướng của riêng bạn cho việc này. Nếu bạn không có tài nguyên phát triển để làm điều đó cho bạn, thì hãy liên hệ với tôi (bạn có thể tìm địa chỉ email của tôi qua blog của tôi, trong hồ sơ của tôi) và tôi có thể lấy một tài khoản (theo cùng giấy phép với Jetty). Sẽ rất dễ dàng để viết một quy tắc chỉ đơn giản là chuyển hướng http sang https.