Chuyển hướng URL cơ sở Tomcat


79

Sử dụng tomcat, làm cách nào để nhận được yêu cầu http://www.mydomain.com chuyển hướng đến http://www.mydomain.com/somethingelse/index.jsp ? tôi thậm chí đã không quản lý để có được một index.html để hiển thị từ http://mydomain.com .


có lý do gì .htaccess hoặc isapi không hoạt động?
Nona Urbiz

5
@NonaUrbiz: máy chủ .htaccess Apache http không phải là cụ thể và không hoạt động với Tomcat?
Tim Büthe

Đối với bất cứ ai khác Tomcat dường như không khuyên bạn nên nó thấy tài liệu của họ - wiki.jenkins-ci.org/display/JENKINS/...
KCD

Câu trả lời:


24

Đặt tên ứng dụng web của bạn là WAR “ROOT.war” hoặc chứa thư mục “ROOT”


Cách tiếp cận này gây ra rất nhiều vấn đề khi làm việc trên cục bộ và sau đó triển khai ứng dụng của bạn đến nhiều máy chủ. Đặc biệt nếu bạn có nhiều dự án sẽ được triển khai trên các máy chủ khác nhau và mỗi dự án có thể được ROOT trên máy chủ của riêng chúng.
zookastos

111

Bạn có thể làm điều này: Nếu cài đặt tomcat của bạn là mặc định và bạn chưa thực hiện bất kỳ thay đổi nào, thì cuộc chiến mặc định sẽ là ROOT.war. Vì vậy, bất cứ khi nào bạn gọi http://yourserver.example.com/, nó sẽ gọi index.htmlhoặc index.jspcủa tệp WAR mặc định của bạn. Thực hiện các thay đổi sau trong webapp/ROOTthư mục của bạn để chuyển hướng các yêu cầu đến http://yourserver.example.com/somewhere/else:

  1. Mở webapp/ROOT/WEB-INF/web.xml, xóa mọi ánh xạ servlet với đường dẫn /index.htmlhoặc /index.jspvà lưu.

  2. Loại bỏ webapp/ROOT/index.html, nếu nó tồn tại.

  3. Tạo tệp webapp/ROOT/index.jspvới dòng nội dung này:

    <% response.sendRedirect("/some/where"); %>
    

    hoặc nếu bạn muốn chuyển hướng đến một máy chủ khác,

    <% response.sendRedirect("http://otherserver.example.com/some/where"); %>
    

Đó là nó.


7
Chỉ cần bước # 2. Đã thử nghiệm trên Tomcat 7.
Dustmachine.

11
Lệnh sendRedirect là tất cả những gì cần thiết đối với tôi. index.jsp chỉ chứa: <% response.sendRedirect ("/ jasperserver"); %>
Andy Burton

3
Đừng quên để thêm <% và%> trước khi bất kỳ scriptlet jsp
Jasim Muhammed

Nên sửa ngay, tôi cũng sửa một số thứ khác.
reinierpost

Java không hoạt động với tôi, vì vậy tôi đã sử dụng index.html với chuyển hướng html. stackoverflow.com/questions/5411538/redirect-from-an-html-page
Jaapyse

18

Hãy xem UrlRewriteFilter về cơ bản là một triển khai dựa trên java của mod_rewrite của Apache.

Bạn sẽ cần giải nén nó vào ROOTthư mục trong thư mục Tomcat của bạn webapps; sau đó bạn có thể định cấu hình chuyển hướng đến bất kỳ ngữ cảnh nào khác trong WEB-INF/urlrewrite.xmltệp cấu hình của nó .


UrlRewriteFilter nhanh và hoạt động tốt đối với tôi. hướng dẫn sử dụng có một số tùy chọn tuyệt vời và bài đăng trên blog này cũng có một số thông tin tốt.
cwd

11

Quy trình kiểm tra và làm việc:

Di chuyển đường dẫn tệp ..\apache-tomcat-7.0.x\webapps\ROOT\index.jsp

xóa toàn bộ nội dung hoặc khai báo các dòng mã bên dưới ở đầu index.jsp

<% response.sendRedirect("http://yourRedirectionURL"); %>

Xin lưu ý rằng trong tệp jsp, bạn cần bắt đầu dòng trên bằng <% và kết thúc bằng%>


8

Tôi đã làm gì:

Tôi đã thêm dòng sau vào bên trong ROOT / index.jsp

 <meta http-equiv="refresh" content="0;url=/somethingelse/index.jsp"/>

2
Điều này thực sự có thể làm hỏng dữ liệu phân tích của bạn, vì giới thiệu sẽ bị mất.
sbichenko,

Một lợi ích nhỏ của phương pháp này là nó có thể đi vào index.html thay vì index.jsp
Edd

@AdrianRM "không phải là cách để làm điều đó", vậy cách nào là đúng?
Ed Griebel

Viral Patel's và ChssPly76's đều là câu trả lời hợp lệ: stackoverflow.com/a/1363781/208576 stackoverflow.com/a/1363685/208576
AdrianRM Ngày

Điều này phù hợp với tôi cho đến khi tôi bật HTTPS. Đã chuyển sang <% response.sendRedirect("/some/where"); %>và nó hoạt động với HTTPS ngay bây giờ.
Michał Maciej Gałuszka

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.