2009-08-17 46 views
6

Tôi đã chạy Apache và Tomcat và tôi sử dụng mod_jk để liên kết chúng. Tôi có một người lao động Tomcat gọi là "tc1" và thiết lập sau trên VirtualHost tôi:mod_jk xung đột với mod_rewrite

JkMount /* tc1 
JkUnMount /*.png tc1 
JkUnMount /*.gif tc1 
JkUnMount /*.css tc1 
JkUnMount /*.js tc1 

Bằng cách đó Tomcat phục vụ tất cả các yêu cầu ngoài những người thân cho các tập tin tĩnh.

Bây giờ tôi muốn sử dụng mod_rewrite và làm điều gì đó rất đơn giản như:

RewriteEngine On 
RewriteRule ^/foo$ /bar [L] 

để viết lại các lần xem trang năng động tại "/ foo" thành "/ bar", nhưng nó không hoạt động bởi vì tất cả các url được xử lý bởi mod_rewrite không kết thúc vào mod_jk.

Tôi đã đọc Apache Tomcat Connector documentation và đã thử tất cả JkOptions nhưng không có gì thay đổi.

Có ai biết cách giải quyết vấn đề này không?

Có phải mod_jkmod_rewrite thứ tự tải và khai báo đặt hàng đóng vai trò nào trong xử lý URL không?

nhờ

Trả lời

12

Đó là kỳ quặc, vì theo mặc định một RewriteRule gửi một chuyển hướng phía máy khách, vì vậy khách hàng nên thực hiện một yêu cầu thứ hai/bar mà phải được đánh bắt bằng JkMount của bạn. Nhật ký truy cập của bạn có hiển thị yêu cầu cho số /foo và yêu cầu cho /bar không?

Hãy thử quy tắc này để thay thế:

RewriteRule ^/foo$ /bar [PT,L] 

Các "PT" có nghĩa là "pass-through", và là một bodge viết lại cho phép bạn biến những URL tại chỗ và cho phép các module khác có được một cái nhìn trong, mà không gửi chuyển hướng.

+0

Cảm ơn câu trả lời của bạn. Tôi sẽ thử và đăng kết quả. Lưu ý rằng tôi không muốn chuyển hướng phía máy khách, nhưng một url được ghi đè. – cherouvim

+0

Cảm ơn rất nhiều! PT (passthrough) là những gì tôi muốn! – cherouvim

Các vấn đề liên quan