UrlRewriteFilter切换?与&

时间:2014-03-28 08:20:26

标签: tomcat redirect url-redirection tuckey-urlrewrite-filter fqdn

我想将所有流量(包含所有参数等)从模式http://myIntranet/*重定向到http://myIntranet.domain.com/*

我在urlrewrite.xml中设置了以下配置:

    <rule>
        <name>Canonical Hostnames</name>
        <note>
            The goal of this rule is to force the use of a particular hostname, in preference to other hostnames which
            may be used to reach the same site. For example, if you wish to force the use of www.example.com instead of
            example.com, you might use a variant of the following recipe.

            RewriteCond %{HTTP_HOST} !^fully\.qualified\.domain\.name [NC]
            RewriteCond %{HTTP_HOST} !^$
            RewriteRule ^/(.*) http://fully.qualified.domain.name/$1 [L,R]
        </note>

        <condition name="host" operator="notequal">^myIntranet\.domain\.com</condition>
        <condition name="host" operator="notequal">^$</condition>
        <from>^/(.*)</from>
        <to type="redirect" last="true">http://myIntranet.domain.com/$1</to>

    </rule>

这种情况类型可以: 当您转到http://myIntranet/时,您将被重定向到http://myIntranet.domain.com/

但是当你转到http://myIntranet/something/viewpage.action?pageId=529509时它不好,因为它忽略了后缀tu base URL的某些部分。我希望它重定向到http://myIntranet.domain.com/something/viewpage.action?pageId=529509

有什么建议吗?

编辑:

我找到了解决方案。我只需要在qsappend="true"标记中添加to,如下所示:

<to type="redirect" last="true" qsappend="true">http://myIntranet.domain.com/$1</to>

使用此配置并调用URL:

http://myIntranet/something/viewpage.action?pageId=529509

我明白了:

http://myIntranet.domain.com/something/viewpage.action&pageId=529509 

现在,问题在于UrlRewriteFilter出于某些未知原因使用?切换&

我还在UrlRewriteFilter repository on Google Code上发布了问题。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

这是UrlRewriteFilter中的已知问题,请参阅此处的发行说明:

Appending query strings breaks URL [更新]你在我刚才看到的最后一句中提到的......对我感到羞耻

虽然发行说明是fixed in 4.0.5,但在任何公共maven回购中都没有这样的版本,SVN trunk仍在4.0.5-SNAPSHOT上。

答案 1 :(得分:1)

我遇到了类似的问题。我可以通过添加一个来实现它的工作吗?结束“到”网址。这样的事情http://myIntranet.domain.com/ $ 1?