新域名的网址重写

时间:2015-12-03 21:14:10

标签: asp.net asp.net-mvc iis ssl url-rewriting

我正在尝试在IIS中创建一个url重写。我们在服务器上安装了SSL证书,并且所有连接都需要HTTPS。 HTTPS重写规则似乎正常运行。

我们遇到的问题是整个组织的用户都有服务器名称的书签。因此,他们将收到有关与证书不匹配的服务器名称的安全警告。示例:https://mywebserver/BI/Default.aspx

我需要重写域名,以便将它们重定向到https://mywebserver.abcxyz.com/BI/Default.aspx

我创建的当前规则将重定向到HTTPS。它还会将域名从https://mywebserver/重写为https://mywebserver.abcxyz.com

我遇到的问题是,如果服务器名称后面有任何内容,它将无法正常工作。无效的域示例:http://mywebserver.abcxyz.com/BI/Default.aspx

有什么建议吗?这是我目前在web.config中的内容。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
    <rewrite>
        <rules>
            <rule name="CanonicalHostNameRule1" enabled="true">
                <match url="(.*)" />
                <conditions>
                    <add input="{HTTP_HOST}" pattern="^mywebserver\.abcxyz\.com$" negate="true" />
                </conditions>
                <action type="Redirect" url="http://mywebserver.abcxyz.com/{R:1}" />
            </rule>
            <rule name="Redirect to HTTPS" enabled="true" stopProcessing="true">
                <match url="(.*)" />
                <conditions>
                    <add input="{HTTPS}" pattern="^OFF$" />
                </conditions>
                <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

1 个答案:

答案 0 :(得分:0)

尝试类似这样的操作并执行HTTPS,这样您就不会有2个单独的重定向

<rule name="CanonicalHostNameRule1" patternSyntax="Wildcard" stopProcessing="true">
  <match url="*" />
  <conditions>
    <add input="{HTTP_HOST}" pattern="mywebserver.com" />
  </conditions>
  <action type="Redirect" url="https://mywebserver.abcxyz.com/{R:1}" />
</rule>