เท่าที่ฉันสามารถบอกได้สิ่งนี้ไม่ใช่เรื่องง่ายที่จะทำกับกฎ / ตัวจัดการใด ๆ ที่มาพร้อมกับ Jetty 6
การRedirectPatternRule
แข่งขันtarget
ที่เป็นเส้นทางในเซิร์ฟเวอร์ Jetty ไม่ใช่ URI เต็มดังนั้นกฎของคุณจะไม่ตรงกัน
คุณสามารถเปลี่ยนเป็น:
<New id="redirect" class="org.mortbay.jetty.handler.rewrite.RedirectPatternRule">
<Set name="pattern">/*</Set>
<Set name="location">https://foobar.com</Set>
</New>
อย่างไรก็ตามนั่นมี 2 ประเด็น:
- มันจะเปลี่ยนเส้นทางคำขอทั้งหมด (แม้
https
คำขอ)
- ไม่คำนึงถึง URL ที่ร้องขอ (มันจะเปลี่ยนเส้นทางไป
location
ตามที่ระบุเสมอและจะไม่สนใจสิ่งใดก็ตามที่ตรงกับpattern
)
คุณสามารถเอาชนะปัญหาแรกด้วยการใช้เล่ห์เหลี่ยมบางอย่าง
คุณสามารถตัดคำRewriteHandler
ใน a ContextHandler
และตัวจัดการบริบทอนุญาตให้คุณระบุตัวเชื่อมต่อที่จะจัดการกับคำร้องขอจาก ( setConnectorNames
) ดังนั้นคุณสามารถใช้สิ่งนั้นเพื่อให้การเขียนใหม่นำไปใช้กับคำขอบนตัวเชื่อมต่อ http เท่านั้น
ฉันไม่สามารถคิดวิธีที่จะเอาชนะปัญหาที่สองได้
ฉันคิดว่าทางออกที่ดีที่สุดของคุณคือการเขียนกฎการเปลี่ยนเส้นทางของคุณเอง หากคุณไม่มีทรัพยากรในการพัฒนาสำหรับคุณโปรดติดต่อฉัน (คุณสามารถค้นหาที่อยู่อีเมลของฉันผ่านบล็อกของฉันซึ่งอยู่ในโปรไฟล์ของฉัน) และฉันสามารถชักหนึ่งขึ้น (ภายใต้ใบอนุญาตเดียวกันกับท่าเทียบเรือ) มันจะค่อนข้างตรงไปตรงมาในการเขียนกฎที่เพียงแค่เปลี่ยนเส้นทาง http ไปยัง https