Is it possible to do 301 redirect with Tomcat 5.5 running standalone, not behind IIS/Apache?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
There isn't a way to set this up as easily as you're able to with Apache. The closest thing would be to make a servlet or jsp to handle the redirect and then map it to the URL you want to redirect from. In the servlet or jsp it would do something like:
response.setStatus(301);
response.setHeader("Location", "http://www.example.com/redirect-to-here.html" );
回答2:
To redirect entire folder to new location you need both a JSP and configuration to call this jsp upon 404.
In index.jsp
you need to modify your redirect behavior. Below code would redirect from OldApp
folder to NewApp
folder on the same server.
index.jsp:
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>301 Moved</title>
</head>
<%@ page import="org.apache.catalina.util.RequestUtil" %>
<%
// get the requested URI
//String requestedLocation = request.getRequestURI();
// original request
String requestedLocation = RequestUtil.filter((String) request.getAttribute("javax.servlet.error.request_uri"));
// rewrite to new location
String newLocation = requestedLocation.replaceAll("^/OldApp", "/NewApp");
// add query string
String query = request.getQueryString();
if (!query.isEmpty()) {
newLocation = newLocation + '?' + query;
}
// 301 - permanent redirect
response.setStatus(response.SC_MOVED_PERMANENTLY);
response.setHeader("Location", newLocation);
%>
<body>
→ <a href="<%=newLocation%>"><%=newLocation%></a>
</body>
</html>
WEB-INF/web.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<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_3_0.xsd"
version="3.0"
metadata-complete="true">
<error-page>
<error-code>404</error-code>
<location>/index.jsp</location>
</error-page>
</web-app>