2014-11-14 17 views
9

Tôi cố gắng để sử dụng RewriteValve trong Tomcat 8.0 http://tomcat.apache.org/tomcat-8.0-doc/rewrite.htmlTomcat 8.0 Rewrite Van

Trong $ CATALINA_HOME/conf/server.xml, tôi đã thêm

<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" /> 

ngay bên dưới thẻ chủ

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> 

Tạo một rewrite.config trong thư mục $CATALINA_HOME/conf với

sau
RewriteRule ^/abc /myapp 

trong đó http:/host:port/myapp là một ứng dụng web hoạt động.

Vì vậy, bây giờ khi tôi đi đến http://host:port/abc Tôi hy vọng sẽ được chuyển hướng đến http://host:port/myapp nhưng tôi nhận được 404 the requested resource is not available thay thế.

Dường như nó thậm chí không đọc được tệp rewrite.config của tôi. Nhật ký truy cập trong thư mục nhật ký chỉ báo cáo số "GET /abc HTTP/1.1" 404 1000 mà không có thêm chi tiết.

Tôi đang thiếu gì? Cảm ơn

+0

Bạn đã bật ghi nhật ký DEBUG cho 'RewriteValve'? Bất cứ điều gì có liên quan trong các bản ghi? Thoạt nhìn, những gì bạn có vẻ chính xác. Bạn đang sử dụng phiên bản Apache Tomcat nào? –

+0

Làm cách nào tôi có thể bật ghi nhật ký DEBUG cho 'RewriteValve'? Tôi đang sử dụng Tomcat 8.0.15 –

+0

Chris - Bất kỳ ý tưởng nào, tôi có thể thử những gì khác? Tôi chỉ là về trí thông minh của tôi kết thúc, không chắc chắn làm thế nào để gỡ lỗi/khắc phục sự cố này hơn nữa. Cảm ơn vì bất kì sự giúp đỡ. –

Trả lời

8

Trong Tomcat tài liệu http://tomcat.apache.org/tomcat-8.0-doc/rewrite.html được viết

Van viết lại có thể được cấu hình như một van được thêm vào trong một Host. Xem tài liệu máy chủ ảo để biết thông tin về cách định cấu hình. Nó sẽ sử dụng một tập tin rewrite.config có chứa các chỉ thị viết lại, nó phải được đặt trong thư mục cấu hình máy chủ.

vì vậy hãy thử để di chuyển rewrite.config vào $CATALINA_HOME/conf/Catalina/localhost

gợi ý nhỏ: bạn có thể đánh sai một cái gì đó trong rewrite.config (ví dụ xxRewriteRule) và sau đó nếu tomcat đọc tập tin này nó không thành công. Tôi nghĩ rằng trong trường hợp của bạn tomcat bắt đầu ngay cả khi bạn sai chính tả một cái gì đó (vì nó không được đọc).

1

Nếu bạn muốn một cái gì đó khác với đường dẫn mặc định $CATALINA_HOME/conf/Catalina/localhost, bạn có thể có thể tận dụng các lĩnh vực resourcePath trong định nghĩa RewriteValve xml của bạn để xác định một đường dẫn tương đối đến tập tin cấu hình. (Phải thừa nhận rằng, tôi chưa sử dụng điều này.)

Hoặc, bạn có thể thêm van vào $CATALINA_HOME/conf/context.xml và sau đó di chuyển rewrite.config vào thư mục WEB-INF của ứng dụng web của bạn.

Từ documentation:

Nó cũng có thể được trong context.xml của một webapp. Van sau đó sẽ sử dụng một tập tin rewrite.config chứa các chỉ thị viết lại, nó phải được đặt trong thư mục WEB-INF của ứng dụng web

+1

Thiết lập trường resourcePath không hoạt động. Nó không phải là một tài sản được công nhận khi cố gắng thiết lập nó. Ngoài ra, bạn có thể xác định van trong $ CATALINA_BASE/conf/[engine]/[tên máy chủ] /your_app.xml và đặt rewrite.config trong thư mục WEB-INF của ứng dụng (your_app). – Achille

0

tôi phải ghi chú bên ngoài AccessLogValve trong server.xml cho viết lại của tôi van để làm việc