我已经有一段时间没有使用UrlRewrite插件中的<rewrite>
规则了,这是让我疯狂 ......
我要完成的是重定向转到的用户:
http://portals.presentkorttorget.se/GetRelationPdf.ashx?relationId=904
将他们发送到
http://www.presentkorttorget.se/GetRelationPdf.ashx?relationId=904
只有 portals
更改为 www
并且我试图避免在.NET中进行重定向,编译并发布整个网站试。
我尝试的是:
<rewrite>
<rule name="PDF redirect to parent shop" patternSyntax="ECMAScript" stopProcessing="true">
<match url="portals\.(([a-z]+)\.([a-z]+))$/GetRelationPdf\.ashx\?$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Redirect" url="http://www.{R:1}/GetRelationPdf.ashx?{R:2}" />
</rule>
</rewrite>
测试的正则表达式中的一些变体
答案 0 :(得分:0)
要根据需要重定向子域,您必须使用条件:
<rule name="PDF redirect to parent shop" patternSyntax="ECMAScript" stopProcessing="true">
<match url="^GetRelationPdf\.ashx$" />
<conditions>
<add input="{HTTP_HOST}" pattern="portals\.(([a-z]+)\.([a-z]+))$" />
</conditions>
<action type="Redirect" url="http://www.{C:1}/GetRelationPdf.ashx" />
</rule>
此规则会检查HTTP_HOST
是否以portals.
开头,并且包含2个以.
分隔的至少在字母上的组。
它还将检查所请求的路径是GetRelationPdf.ashx
(不区分大小写)。
在重定向中,后引用使用{C:1}
,从条件中获取信息,并且在触发重定向时默认附加查询字符串。