使用ARR如果缺少cookie,你如何重写网址?

时间:2015-08-14 06:50:29

标签: asp.net iis arr

我知道我可以在规则的条件部分使用{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的身份验证服务器。如何编写可以执行此操作的重写规则?

1 个答案:

答案 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不为空。否定简单地翻转条件,因此使其为空或不存在。