使用IIS重写URL为Cookie中的值捕获

时间:2012-01-06 20:21:30

标签: iis-7 url-rewriting

我需要为IIS 7.5网站编写一个URL重写规则,该规则捕获特定cookie中的值,然后使用该值构建URL。例如,传入的请求如下所示:

GET http://myserver.com/test.aspx HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: en-US
User-Agent: Mozilla/5.0
Host: myserver.com
Cookie: foo=bar; bat=bar

我想将它们路由到此(基于" foo" cookie值):

http://myserver.com/bar/test.aspx

回顾文档并搜索示例,我很难过!谢谢你的帮助。

2 个答案:

答案 0 :(得分:11)

回答我自己的问题,这是一个有效的例子。该模式可能需要额外的工作,具体取决于需要支持的字符,但以下规则将使用发现的cookie值并路由到发现的服务器 - 并且服务器可以通过IPv4地址或名称(字母数字和周期)指定)。

<rule name="Route Base On Cookie" stopProcessing="true">
  <match url="^(.*)" />
    <conditions>
       <add input="{HTTP_COOKIE}" pattern="foo=(.*?);" />
    </conditions>
  <action type="Rewrite" url="http://{C:1}/{R:0}" />
</rule>

答案 1 :(得分:2)

@Geoffrey为了让你的代码支持返回任何cookie值,我建议使用这种模式:

<add input="{HTTP_COOKIE}" pattern="foo=(.*?);" />

提醒一下,{HTTP_COOKIE}值如下所示:

Cookie:foo = myexamplevalue;到期=星期三,03-May-2014 22:31:08 GMT;路径= /;仅Http \ r \ n