我知道我可以在规则的条件部分使用{HTTP_COOKIE}
变量根据cookie中的值重写网址。此规则获取一个名为ServerProxy的cookie,并重写到该服务器URL。
<rule name="SendTrafficToServerProxyCookieValue" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://{C:1}/{R:0}" />
<conditions>
<add input="{HTTP_COOKIE}" pattern="ServerProxy=(.*)" />
</conditions>
</rule>
如果ServerProxy
cookie不存在或未设置,我想将流量定向到名为authenticate.app
的身份验证服务器。如何编写可以执行此操作的重写规则?
答案 0 :(得分:5)
试试这个:
<rule name="SendTrafficToServerProxyCookieValue" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://{C:1}/{R:0}" />
<conditions>
<add input="{HTTP_COOKIE}" pattern="ServerProxy=(.+)" />
</conditions>
</rule>
<rule name="DoAuthRewrite" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="SOMETHING_ELSE" />
<conditions>
<add input="{HTTP_COOKIE}" pattern="ServerProxy=(.+)" negate="true" />
</conditions>
</rule>
请注意,*
已更改为+
,以确保Cookie不为空。否定简单地翻转条件,因此使其为空或不存在。