在 Tomcat 中,“重定向”常见有几种场景,下面按使用频率给你系统讲一下。
response.sendRedirect("/newPath/index.jsp");
✅ 适合:登录跳转、权限控制
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location", "/newPath/");
<error-page>
<error-code>404</error-code>
<location>/404.html</location>
</error-page>
public void doFilter(...) {
if (条件) {
response.sendRedirect("/login.jsp");
}
}
RewriteValve(Tomcat 8+ 推荐)步骤:
1️⃣ 在 server.xml 或 context.xml 中启用:
<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
2️⃣ 在 WEB-INF/rewrite.config 中写规则:
RewriteRule ^/old/(.*)$ /new/$1 [R=301,L]
✅ 适合:
<%
response.sendRedirect("/app/");
%>
location / {
return 301 http://domain/app/;
}
如果你用 Nginx + Tomcat,重定向容易出问题:
❌ 错误现象:
http://localhost:8080✅ 解决:
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
Tomcat:
<Connector ... proxyName="www.xxx.com" proxyPort="80" />
| 方式 | 是否改地址栏 | 是否服务端 |
|---|---|---|
| sendRedirect | ✅ | ❌ |
| RequestDispatcher.forward | ❌ | ✅ |
| RewriteValve | ✅ | ✅ |
如果你愿意,可以告诉我:
我可以直接给你可用的配置示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。