UrlRewriteFilter等效于mod_rewrite

时间:2009-09-05 02:46:26

标签: tomcat mod-rewrite url-rewriting

我想使用UrlRewriteFilter在Tomcat中重写Url 这是mod_rewrite apache

中的规则
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule (.*) index.php/$1 [L]   

我很困惑如何检查请求文件名,如果它不是文件或UrlRewriteFilter中的文件夹

有人能帮助我吗?

3 个答案:

答案 0 :(得分:0)

实际上,您不必担心这一点。 Apache的mod_rerwite模块为您解决了这个问题。试试吧..如果你试图访问服务器中的文件夹或文件,它会打开它,或者它会应用你在那里的RewriteRule。

答案 1 :(得分:0)

你做不到。好吧,如果您使用的是UrlRewriteFilter版本3.2,您可以编写自己的自定义class-rule来检查它;但这并不是UrlRewriteFilter的设计目的。

这绝对属于Apache的mod_rewrite,特别是考虑到你的示例中有index.php。为什么该请求甚至会被Tomcat转发/服务?

答案 2 :(得分:0)

这对我有用

<?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>