仅使用Web.config,我需要将所有流量重定向到新域,而且: 1)保留子域 2)保留查询参数 3)在执行上述操作时,如果将“ http”而非“ https”更改为“ https”
我可以轻松地处理HTTPS的强制实施,并且我看到了很多有关域重定向的参考,但是没有找到任何在更改为根域时保留子域的信息。
<rewrite>
<rules>
<rule name="Redirect HTTP to HTTPS" stopProcessing="true">
<match url="^(.*)$" />
<conditions trackAllCaptures="true">
<add input="{HTTPS}" pattern="^OFF$" />
<add input="{HTTP_HOST}" matchType="Pattern" pattern="^localhost(:\d+)?$" negate="true" />
<add input="{HTTP_HOST}" matchType="Pattern" pattern="^127\.0\.0\.1(:\d+)?$" negate="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
</rule>
</rules>
</rewrite>
'上面的方法可以将http更改为https,但是对于更改域名没有帮助。我还在下面看到了几乎可行的方法:'
<rule name="redirect" enabled="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" negate="false" pattern="^(.*)\.foo\.com" />
</conditions>
<action type="Redirect" url="https://{C:1}.bar.com/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>
...but removes the subdomain:
http://x.foo.com
> https://.bar.com
它需要做什么的例子:
http://x.foo.com
> https://x.bar.com
https://y.foo.com
> https://y.bar.com
https://x.foo.com/blah.aspx?param=blue > https://x.bar.com/blah.aspx?param=blue
http://y.foo.com/blah.aspx?param=blue > https://y.bar.com/blah.aspx?param=blue
答案 0 :(得分:0)
好的,我想出了以下解决方案,该解决方案完全可以满足我的需要(请参见上述要求)。为此,我添加了两个独立的规则块:一个用于确保HTTPS,另一个用于在必要时重定向到另一个域。我认为,如果访问需要1)HTTP到HTTPS以及2)直接到新域(从* .foo.com> * .bar.com),这会使访问量增加一倍,但至少可以正常工作。不确定是否可以将其调整为一条规则以保存匹配?
<rewrite>
<rules>
<rule name="Redirect HTTP to HTTPS" stopProcessing="true">
<match url="^(.*)$" />
<conditions trackAllCaptures="true">
<add input="{HTTPS}" pattern="^OFF$" />
<add input="{HTTP_HOST}" matchType="Pattern" pattern="^localhost(:\d+)?$" negate="true" />
<add input="{HTTP_HOST}" matchType="Pattern" pattern="^127\.0\.0\.1(:\d+)?$" negate="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther"/>
</rule>
<rule name="Redirect to new domain" enabled="true">
<match url="(.*)$" />
<conditions trackAllCaptures="true">
<add input="{HTTP_HOST}" negate="false" pattern="^(.*)\.foo\.com" />
</conditions>
<action type="Redirect" url="https://{C:1}.bar.com/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>
</rules>
</rewrite>