您可以访问主要的 Tomcat 配置吗?Tomcat 可以做虚拟主机,所以你可以用一个简单的 webapp 设置一个单独的虚拟主机来做重定向。
conf/server.xml
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps" ...>
<!-- current configuration, this Host will serve www.example.com -->
</Host>
<Host name="example.com" appBase="nonwww-webapps" />
</Engine>
非www-webapps/ROOT/WEB-INF/web.xml
<?xml version="1.0" ?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<servlet>
<servlet-name>redirectToWww</servlet-name>
<jsp-file>/WEB-INF/redirect.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>redirectToWww</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
非www-webapps/ROOT/WEB-INF/redirect.jsp
<% response.sendRedirect("http://www.example.com" + request.getRequestURI() +
(request.getQueryString() == null
? ""
: ("?" + request.getQueryString())
)); %>
或者,如果您想要 301 而不是 302 重定向
<% response.setStatus(301);
response.setHeader("Location", "http://www.example.com" + request.getRequestURI() +
(request.getQueryString() == null
? ""
: ("?" + request.getQueryString())
));
response.setHeader("Connection", "close"); %>