【问题标题】:Tomcat URL rewritingTomcat URL 重写
【发布时间】:2019-03-11 13:34:13
【问题描述】:

希望就 Tomcat9 的 URL 重写寻求帮助。

我使用 J2EE 和 MVC 框架开发了一个 Web 应用程序。

当前用于访问网络的 URL 是

http://www.example.com:8080/MyApp/App/login.html 

(Login.html 是我的默认 index.html)

我希望实现的是得到http://www.example.com:8080/login.html 这意味着对于每个页面,MyApp/App 结构将从 URL 中隐藏

我研究过 URL 重写,但对使用的正则表达式感到困惑。例如,我发现了以下 sn-p 但不太确定第二行 RewriteRule 的含义。第一行可能意味着忽略 css、img、js 文件。

RewriteCond %{REQUEST_URI} ^/(css|img|js|partials|rest|favicon).*$
RewriteRule ^.*$ - [L]

感谢您的帮助。

【问题讨论】:

    标签: java tomcat jakarta-ee


    【解决方案1】:

    您似乎正在使用 Apache 来重写 URL。为什么不将 login.html 放在 Web 应用程序的根目录下?谁决定它应该在 MyApp/App 上?我认为 MyApp 可能来自您的 WAR 文件,而 App 是一个 servlet 挂载点或类似的东西,对吧?您可以通过将文件命名为 ROOT.WAR but there are other methods too 来摆脱 WAR 路径。要摆脱 App,您可以将 servlet 挂载在“/”上,或者(如果您的框架支持)使用过滤器而不是 servlet 来处理您的请求。

    您包含的重写规则(它只是一个规则)说,如果请求 URL 以 css、img 等开头(RewriteCond 正则表达式),那么不要做任何事情(这就是 '-' 的意思) 并停止评估重写规则([L] 代表 Last)。它对您的情况似乎不是很有用,但这可能是一个排除:在它之后还有其他规则我们确实想要应用,而这个规则旨在避免重写一些路径(css、img 等)我们想独自离开。

    【讨论】:

    • 嗨,我之前尝试将我的应用程序部署为 ROOT.war 在我的服务器上。但是,当我尝试登录时,其他功能中断,我根本无法登录。
    • 您的应用程序中是否存在假定路径为 MyApp/App 的部分?如果是这样,即使您重写 URL,这些部分也会中断。我建议在不重写 URL 的情况下让它工作,因为除非你真的需要它 URL 重写只会给你的应用增加一些不必要的额外复杂性。
    • 是的,实际上很多其他页面都需要 MyApp/App。因为还有一个函数实际上也可以从 url 生成 pdf 报告。我怎样才能在不重写 URL 的情况下让它工作?
    • 您几乎必须通过您的应用程序并修复依赖路径为 MyApp/App 的部分。在每个实例中进行更改很简单,但可能需要一些努力才能找到所有受影响的功能。
    • 根据您的指南,它提到将战争部署为 ROOT.war。但是我也必须删除根文件夹?我该如何在服务器中执行此操作?假设我正在运行 CentOS 6 VPS
    猜你喜欢
    • 2015-04-30
    • 2015-10-02
    • 1970-01-01
    • 2014-11-10
    • 2011-10-01
    • 2016-04-09
    • 2021-10-11
    • 2010-12-06
    • 2020-09-03
    相关资源
    最近更新 更多