旧的重写规则,如何更改域

时间:2013-08-19 08:42:15

标签: asp.net url-rewriting webforms

我已经有一段时间没有使用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>

以及我使用http://www.gskinner.com/RegExr/

测试的正则表达式中的一些变体

1 个答案:

答案 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},从条件中获取信息,并且在触发重定向时默认附加查询字符串。