【问题标题】:UrlRewriteFilter equivalent for mod_rewrite与 mod_rewrite 等效的 UrlRewriteFilter
【发布时间】:2009-09-05 02:46:25
【问题描述】:

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

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

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

谁能帮帮我?

【问题讨论】:

    标签: tomcat mod-rewrite url-rewriting


    【解决方案1】:

    这对我有用

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

    【讨论】:

      【解决方案2】:

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

      这绝对属于 Apache 的 mod_rewrite,尤其是考虑到您的示例中有 index.php。为什么该请求甚至会被转发给 Tomcat/由 Tomcat 提供服务?

      【讨论】:

      • 您好,是的,通过查看规则 index.php,Tomcat 提供服务可能看起来很奇怪。好吧,实际上我的程序是用 php 编写的。我正在使用 PHP Java Bridge 在 Tomcat 上运行它。是的,它运行得很好,除非我需要在 Apache 中重写 Url,规则很容易编写。好吧,因为按照您所说的,如果我编写自己的自定义类,我可以,我将尝试研究这个主题 PS:我在 Tomcat 上运行 php 因为我想在我的 php 应用程序中使用 Jasper Reports 如果您知道如何集成 Jasper Reports其他方式,请告诉我
      • Erwin,我建议您考虑在 Tomcat 前运行 Apache。让您的 PHP 应用程序在 Apache 中运行并使用常规的 mod_rewrite(比在 Tomcat 中更容易并且很可能更快)并在 Tomcat 中运行 Jasper。然后,您可以通过带有必要参数的本地 URI 调用 Jasper 报告。看看tomcat.apache.org/connectors-doc/webserver_howto/apache.html,了解如何使用 Tomcat 运行 Apache;你也可以通过 mod_proxy 做到这一点。 Google (google.com/search?q=run+apache+with+tomcat) 也有不少结果
      【解决方案3】:

      实际上,您不必担心这一点。 Apache 的 mod_rerwite 模块会为您解决这个问题。试试看.. 如果您尝试访问服务器中的文件夹或文件,它会打开它,否则它将应用您在其中的 RewriteRule。

      【讨论】:

      • 是的,它在 Apache 上工作,但目前我正试图让它在 Tomcat 上工作。因此需要将其转换为 UrlRewriteFilter 条件。谢谢你的回答
      猜你喜欢
      • 1970-01-01
      • 2011-12-27
      • 1970-01-01
      • 1970-01-01
      • 2021-01-29
      • 2011-10-24
      • 2016-05-19
      • 2012-03-19
      • 2013-05-19
      相关资源
      最近更新 更多