UrlRewriteFilter 在 Tomcat 中不生效

Posted

技术标签:

【中文标题】UrlRewriteFilter 在 Tomcat 中不生效【英文标题】:UrlRewriteFilter Is Not Taking Effect in Tomcat 【发布时间】:2021-01-29 18:59:27 【问题描述】:

我的网站托管在 Tomcat 下的 Centos 中。 网络运行良好。 (WEB-INF 中没有 web.xml)

我想使用 urlrewritefilter-4.0.4.jar 为 jsp 页面创建一个永久链接 但是上传后,地址web.com/COVID-19显示404。

这是我的 web.xml(默认)

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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">
    <filter>
        <filter-name>UrlRewriteFilter</filter-name>
        <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>UrlRewriteFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
    </filter-mapping>
</web-app>

这是我的 urlrewrite.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN" "http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">
<urlrewrite>
    <rule>
        <from>/COVID-19</from>
        <to>/covid19.jsp</to>
    </rule>
</urlrewrite>

请帮忙,谢谢。

【问题讨论】:

【参考方案1】:

所以,当我在绝望中挣扎了几个小时后,在午夜深夜沉思时,我开悟了。

urlrewritefilter 不起作用的原因是因为 Tomcat 真的没有什么可响应的。 它是 Apache,它只将 url 转发到以 *.jsp 和 servlet (mod_jk) 结尾的 Tomcat。 所以很自然,Tomcat 没有得到任何以“COVID-19”结尾的 url,因为它是由 Apache 处理的。

我修改了配置,现在运行流畅。 感谢上帝。

【讨论】:

以上是关于UrlRewriteFilter 在 Tomcat 中不生效的主要内容,如果未能解决你的问题,请参考以下文章

UrlRewriteFilter 运行元素产生 404 但元素在 GAE/Java 上工作正常

UrlRewriteFilter 错误

URLRewriteFIlter,如何删除上下文/文件夹名称?

使用urlrewritefilter发现部分请求url报404

UrlRewriteFilter 直接到 https

自定义过滤器扩展 UrlRewriteFilter 以从数据库加载规则