【发布时间】:2025-12-11 02:35:01
【问题描述】:
我有一个 MV webapp,它使用<c:url>(或<spring:url>)jsp 标签在视图中生成链接。
我的 web 应用当前部署了上下文路径“/”,因此可以通过地址 http://mydomain 访问它。
现在我想用上下文路径/app 部署这个应用程序。
访问该应用的新 URL 现在是 http://mydomain/app。
我不希望网络用户查看应用程序部署所在的 contextPath 并保持 URL 干净。我现在使用 RewriteRule 将 /app 附加到每个通过 Apache 的请求,然后再点击 Tomcat。
所以用户可以浏览到http://mydomain,重写规则会将请求转发到在上下文路径/app下部署的正确webapp。
我现在遇到的问题是,使用<c:url> 视图会在包含 contextPath 的 HTML 中生成页面链接。我正在尝试使用重写规则隐藏。
因此,在 /app 上下文下部署 webapp 后,HTML 包含类似 http://mydomain/app/other/careers.html 的链接,而不是 http://mydomain/other/careers.html
有没有办法解决这个问题而不必使用<c:url>修改所有页面?
taglib 的目的正是为了管理 contextPath,这样它就不会在页面中硬编码。但我的问题是,当我使用重写规则引擎时,我不再需要 HTML 页面中的这个上下文路径,因为我在重写规则本身中处理它。
【问题讨论】:
标签: java spring-mvc nginx jstl taglib