在初始主机请求时重写IIS URL
我对IIS7集成管道URL重写有问题。 对于我的特定场景,我需要重写/重定向初始请求的一部分,如下所示在初始主机请求时重写IIS URL,iis,url-rewriting,Iis,Url Rewriting,我对IIS7集成管道URL重写有问题。 对于我的特定场景,我需要重写/重定向初始请求的一部分,如下所示 用户输入http://savecontoso.com/files/123456789/somefile.html在浏览器地址栏中 用户被重定向到http://savecontso.com/default.aspx?url=(url=“default.aspx?url={R:1}”的结果) 仅当我创建初始请求时,http://savecontoso.com/default.aspx/files/
http://savecontoso.com/files/123456789/somefile.html
在浏览器地址栏中http://savecontso.com/default.aspx?url=
(url=“default.aspx?url={R:1}”的结果)http://savecontoso.com/default.aspx/files/123456789/somefile.html
我必须注意,服务器上没有/files/
的实际目录,也没有/123456789/
或任何名为somefile.html的文件。我只需要将整个路径和文件名附加到查询字符串中
这是我第一天使用IIS(而不是页面代码隐藏)使用重定向/重写功能,我环顾了learn.IIS.net、Google等网站,但都无济于事。我知道重写是在页面请求之前进行的,但由于某种原因,我的特定代码在触发重定向之前需要一个页面请求
我怀疑这是因为我没有在初始请求时触发条件
<rewrite>
<rules>
<rule name="1" stopProcessing="true">
<match url="(.*)(/files/\d+/.*html$)" />
<action type="Redirect" redirectType="Permanent" url="default.aspx?url={R:1}" />
</rule>
</rules>
</rewrite>
由于您的匹配模式,它很可能不起作用:
{R:1}
将只匹配模式中的(.*)
,而不会匹配文件/123…
- 匹配模式中的URL始终以无前导斜杠开头:应该是
files/\d+…
,而不是/files/\d+…
试试这个(对我来说很好):
非常感谢您的帮助。在发布之前,我尝试过各种分组。甚至将其分解为4个部分,并尝试添加以进行测试。正斜杠是罪魁祸首。小细节。。。再次感谢,真是帮了大忙。
<rule name="1" stopProcessing="true">
<match url="^files/\d+/.*\.html$" />
<action type="Redirect" url="default.aspx?url={R:0}" redirectType="Permanent" />
</rule>