我正在尝试使用UrlRewriteFilter
进行重定向。由于我们一直在开发服务器和基础架构以开发内部云解决方案,因此我们计划使用大量此类解决方案。
我的问题是我有一个像
这样的网址https:// google.com/web-app/servlet?request-parameters&values
我需要将具有特定参数值的所有URL
重定向到不同的服务器。
所以这样的网址如下:
https:// google.com/administrator/servlet/ej.processOrder?sec=100&geo=appointment&cus=dubai
如果参数包含cus=dubai
,我需要将其重定向到
https://hotmail.com/servlet/ej.processOrder?sec=100&geo=appointment&cus=dubai
我尝试过以下但似乎无法正常工作
<urlrewrite use-query-string="true">
<rule match-type="wildcard">
<name>Redirect requests to cases</name>
<description></description>
<from>/administrator/servlet/**?**</from>
<to type="redirect" last="true">http://hotmail.com:8080/servlet/$1?&cus=dubai&$2&$3&</to>
</rule>
</urlrewrite>
感谢您的帮助。
答案 0 :(得分:1)
您需要使用query-string
并确保其符合特定条件。
从我所看到的你会想要这样的东西:
<condition name="query-string" operator="equal">*cus=dubai*</condition>
每个不同参数都需要一个规则。一条完整的规则看起来像这样:
<urlrewrite use-query-string="true">
<rule match-type="wildcard">
<name>Cus = dubai</name>
<from>/administrator/servlet/*</from>
<condition name="query-string" operator="equal">*cus=dubai*</condition>
<to type="redirect" last="true">https://hotmail.com/servlet/ej.processOrder?sec=100&geo=appointment&cus=dubai</to>
</rule>
<!-- other rules go here -->
</urlrewrite>
答案 1 :(得分:1)
条件应为&#34; type&#34;而不是&#34; name&#34;,as:
<condition type="query-string" operator="equal">*cus=dubai*</condition>
答案 2 :(得分:0)
好的问题和我想象的情况经常在我看来manual中没有很好地记录。
以下对我有用 -
<rule>
<condition type="query-string">foo=123&bar=456</condition>
<from>/index.jsp</from>
<to type="permanent-redirect" last="true">https://somehwere-else.com/blah/blah/</to>
</rule>
所以这对你有用 -
<rule>
<name>Redirect requests to cases</name>
<condition type="query-string">sec=100&geo=appointment&cus=dubai</condition>
<from>/administrator/servlet</from>
<to type="permanent-redirect" last="true">http://hotmail.com:8080/servlet/sec=100&geo=appointment&cus=dubai</to>
</rule>