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

Posted

技术标签:

【中文标题】UrlRewriteFilter 运行元素产生 404 但元素在 GAE/Java 上工作正常【英文标题】:UrlRewriteFilter run element produces 404 but to element works fine on GAE/Java 【发布时间】:2011-11-05 08:14:04 【问题描述】:

我正在使用 UrlRewriteFilter 库以避免编写自己的 url 过滤器。

我很确定我已经正确设置了东西,因为当我在我的 url 中有这个时重写 xml:

    <rule>
      <from>^/urlIWantToMap</from>
      <to type="redirect">/WhereIWouldLikeItToGo</to>
    </rule>

它似乎工作正常(例如,点击http://localhost:8080/urlIWantToMap 会将我发送到预定位置)。请注意,我必须将 servlet 映射添加到我的 web.xml。

如果我尝试这个...

    <rule>
      <from>^/urlIWantToMap</from>
      <run class="mypackage.MyServletClass" method="doGet"/>
    </rule>

我得到了一个 http 404。我认为这与此处描述的问题相同(尽管我对作者提出的解决方案/解决方案持怀疑态度):

http://greatwebguy.com/programming/java/urlrewritefilter-servlet-filter-problem-in-websphere-6105-and-greater/

如果对 Web 过滤器行为进行某种更改以阻止 UrlRewriteFilter 调用 servlet,我可以看到这种情况。要么;或者我犯了一个我没有看到的明显错误。

【问题讨论】:

【参考方案1】:

当应用服务器启动时你看到类似的东西吗?

INFO: org.tuckey.web.filters.urlrewrite.Run ERROR: could not find method with the name doGet on mypackage.MyServletClass

即使你不知道,public 方法 doGet 是否存在没有任何参数?在我的情况下,它受到保护,虽然 http://localhost:8080/MyProject/rewrite-status 告诉我一切都很好,但我仍然得到了 404。

我必须创建一个包装方法来公开 doGet 并像这样配置 urlrewrite.xml:

<run class="my.wrappers.WrapperServlet" method="doGet(HttpServletRequest, HttpServletResponse)" />

【讨论】:

我没有这个就继续前进;但有机会我会回去试一试。

以上是关于UrlRewriteFilter 运行元素产生 404 但元素在 GAE/Java 上工作正常的主要内容,如果未能解决你的问题,请参考以下文章

UrlRewriteFilter 直接到 https

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

伪静态

UrlRewriteFilter 错误

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

使用UrlRewriteFilter对url进行更替