Tomcat 用于mod_rewrite的UrlRewriteFilter等效项

Tomcat 用于mod_rewrite的UrlRewriteFilter等效项,tomcat,mod-rewrite,url-rewriting,Tomcat,Mod Rewrite,Url Rewriting,我想在Tomcat中使用UrlRewriteFilter进行Url重写 这是mod_rewrite apache中的规则 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*) index.php/$1 [L] 如果请求文件名不是URL中的文件或文件夹,我不知道如何检查它 有人能帮我吗?事实上,你不必为此担心。Apache的mod_rerwit

我想在Tomcat中使用UrlRewriteFilter进行Url重写 这是mod_rewrite apache中的规则

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule (.*) index.php/$1 [L]   
如果请求文件名不是URL中的文件或文件夹,我不知道如何检查它


有人能帮我吗?

事实上,你不必为此担心。Apache的mod_rerwite模块将为您解决这一问题。试试看。。如果您试图访问服务器中的文件夹或文件,它将打开该文件夹或文件,或者应用其中的重写规则。

您不能。如果您使用的是版本3.2,并且您将编写自己的自定义来检查它,那么您可以这样做;但这并不是URLEwriteFilter设计的真正目的

这绝对属于Apache的mod_重写,特别是考虑到您的示例中有
index.php
。为什么那个请求会被转发给Tomcat或者由Tomcat提供服务呢?

这对我来说很有效

<?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>
        <note>
            Fitler for checking if file exists.
        </note>
        <condition type="request-filename" operator="notfile" next="and" />
        <condition type="request-filename" operator="notdir" />
        <from>(.*)</from>
        <to type="redirect" last="true">index.php/$1</to>
    </rule>
</urlrewrite>

用于检查文件是否存在的Fitler。
(.*)
index.php/$1

是的,它在Apache上工作,但目前我正在尝试在Tomcat上工作。因此,需要将其转换为URLEwriteFilter条件。感谢您回答Hello,是的,通过查看rule index.php,Tomcat提供的服务可能看起来很奇怪。实际上我的程序是用php编写的。我正在使用PHP Java桥在Tomcat上运行它。是的,它运行得很好,除了我需要在Apache中重写Url时,这个规则很容易编写。因为根据你说的,如果我写我自己的自定义类,我会尝试研究这个主题PS:我在Tomcat上运行php,因为我想在我的php应用程序中使用Jasper Reports如果你知道如何以另一种方式集成Jasper Reports,请告诉我,我建议您考虑在Tomcat面前运行Apache。让您的PHP应用程序在Apache中运行,并使用常规的mod_重写(比在Tomcat中进行重写容易得多,很可能更快),然后在Tomcat中运行Jasper。然后,您可以通过带有必要参数的本地URI调用Jasper报告。看看如何使用Tomcat运行Apache;您也可以通过mod_代理来实现这一点。Google()也有很多结果