Tuckey urlrewrite匹配和上下文

时间:2014-05-14 21:36:09

标签: tuckey-urlrewrite-filter

我有一个在Tomcat 7服务器下运行的AngularJS应用程序,该应用程序位于〜/ tomcat / webapps / web-client /。

我尝试配置服务器,以便刷新或以其他方式使用URL重定向到     http://server:8080/web-client/index.html

使用Tuckey UrlRewrite,我在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>/(.*)$</from>
       <to type="redirect">/web-client/index.html</to>
    </rule>
</urlrewrite>

这适用于任何类似的东西     server:8080/whatevergarbage, 但不是     server:8080/web-client/moregarbage

我尝试在urlrewrite.xml文件中添加use-context,以及在server.xml文件中启用crossContext:     

还为index.html添加了基本标记。

我很确定我完全不理解这个问题......

1 个答案:

答案 0 :(得分:2)

解决方案:

我误解了网址重写的方式。我在~/tomcat/webapps/ROOT/WEB-INF下安装了重写器,当它真的需要在应用程序文件夹下时: ~/tomcat/webapps/web-client/WEB-INF

因此,现在server:8080/web-client/下的网址被正确重定向。

如果它将来帮助其他人,这是我的urlrewrite.xml文件:

<urlrewrite use-context="false">
    <rule enabled="true">
        <note>Do not process URL ending at index.html</note>
        <from>/index.html$</from>
        <to last="true">-</to>
    </rule>
    <rule enabled="true">
        <note>Do not process URLs targeting assets</note>
        <from>/assets/</from>
        <to last="true">-</to>
    </rule>
    <rule enabled="true">
        <note>Do not process calls to restservice</note>
        <from>/restservice/</from>
        <to last="true">-</to>
    </rule>
    <rule enabled="true">
        <note>Do not process mocks</note>
        <from>/mocks/</from>
        <to last="true">-</to>
    </rule>
    <rule enabled="true">
        <note>Process any URL without 'index', send to /web-client/index.html</note>
        <from>^(?!index).*$</from>
        <to type="redirect">%{context-path}/index.html</to>
    </rule>
</urlrewrite>