2010-09-14 38 views
21

chủ đề nói tất cả. Những gì tôi muốn là để ánh xạ mỗi miền phụ để một webapp như:Làm cách nào để ánh xạ miền phụ tới webapp trên Tomcat 6 (bao gồm cả webapp gốc)?

http://root.domain.com:8080 -> http://domain.com:8080/ 
http://manager.domain.com:8080 -> http://domain.com:8080/manager 
http://abc.domain.com:8080 -> http://domain.com:8080/abc 
http://def.domain.com:8080 -> http://domain.com:8080/def 

trên một máy localhost này sẽ

http://root.localhost:8080 -> http://localhost:8080/ 
http://manager.localhost:8080 -> http://localhost:8080/manager 
http://abc.localhost:8080 -> http://localhost:8080/abc 
http://def.localhost:8080 -> http://localhost:8080/def 

Lý tưởng nhất, tôi muốn sử dụng cổng 80 thay vì 8080, nhưng đó là một câu chuyện khác. Tôi rất vui khi nhận được nó đi với cổng 8080 lúc đầu, để con đường ở cuối URL biến mất.

Lưu ý, các mũi tên không phải là chuyển hướng nhưng những gì tôi muốn nhập nếu tôi để Tomcat như cũ.

Tôi biết trang tài liệu Tomcat http://tomcat.apache.org/tomcat-6.0-doc/virtual-hosting-howto.html. Tôi đã đọc nó nhiều lần, nhưng không tiến bộ nhiều. Tôi đã chỉnh sửa etc/hosts để thêm 127.0.0.1 bbstats.localhost. Sau đó tôi đã thêm

<Host name="bbstats.localhost" appBase="webapps/bbstats" 
     unpackWARs="true" autoDeploy="true" 
     xmlValidation="false" xmlNamespaceAware="false"> 
</Host> 

vào Tomcat's server.xml trong thư mục conf. Ngữ cảnh webapp của tôi là:

<Context path="/bbstats" docBase="bbstats" debug="5" reloadable="true" crossContext="true"> 
</Context> 

Khởi động lại Tomcat. Redploy thông qua Ant. Khi nhập

http://bbstats.localhost:8080/

vào trình duyệt, tôi nhận được một màn hình trống.

Khi sử dụng appBase = "webapps" thay vì appBase = "webapps/bbstats", tôi nhận được ứng dụng gốc của Tomcat. Hành vi thứ hai là loại mong đợi. Nhưng làm thế nào để làm cho bbstats.localhost: 8080 đi đến webapp bbstats mà không có một dấu/bbstats trong URL?

+0

Hi Karsten, Tomcat của bạn có bắt đầu sạch với cấu hình ở trên không? Bất kỳ lỗi nào trong nhật ký catalina? – codeporn

+0

Làm sạch từ những gì tôi thấy. Không có lỗi trong catalina. *. Log, chỉ cảnh báo "14.09.2010 17:25:53 org.apache.catalina.startup.HostConfig deployDescriptor WARNUNG: Một docBase C: \ dev \ tomcat \ webapps \ bbstats bên trong ứng dụng hostBase đã được chỉ định và sẽ bị bỏ qua "có thể phải làm với context.xml chỉ định các giá trị appBase và docBase giống nhau. – Kawu

Trả lời

26

Bạn có thể thử lồng mỗi ứng dụng web dưới dạng ứng dụng web gốc trong <Host> trong tệp server.xml bằng cách cho path="". Tôi không cố gắng điều này bản thân mình.

<Host name="bbstats.localhost" appBase="webapps"> 
    <Context path="" docBase="/bbstats/"/> 
</Host> 

<Host name="tomcatstuff.localhost" appBase="webapps"> 
    <Context path="" docBase="/tomcatstuff/"/> 
</Host> 
+2

Tôi hiện đang sử dụng "" và nó hoạt động ngay bây giờ! :-) Lưu ý tôi cũng đã xóa đường dẫn và docBase khỏi tệp META-INF/context.xml của mình. Trích dẫn http://old.nabble.com/appbase-and-docbase-td18616249.html: "... thuộc tính đường dẫn và docBase không được phép cho phần tử trong META-INF/context.xml" Tôi tìm thấy thêm kỹ thuật được xác nhận bởi http://oreilly.com/java/archive/tomcat-tips.html. Chúc mừng! – Kawu

+6

Sử dụng docBase như mô tả ở trên đã tạo ra một 'tài liệu cơ sở/bbstats không tồn tại hoặc không phải là một thư mục có thể đọc được, vấn đề đã được giải quyết bằng cách loại bỏ dấu gạch chéo:' '. Hoạt động tuyệt vời, cảm ơn! – Kof

+2

Hi bạn có thể vui lòng hướng dẫn tôi đạt được cấu hình miền phụ bằng cách sử dụng tomcat cho máy chủ cửa sổ – kakabali

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