IIS仅将http重定向到https

时间:2017-04-12 06:56:18

标签: asp.net ssl iis asp.net-core

我创建了ASP.NET Core项目,并为我的网站购买了SSL。我在web.config中创建了一个重定向规则,将我的http重定向到https。我的问题是,我网站上的每个链接现在都有https导致证书问题,因为其中一些链接没有ssl。这就是我所做的:

<rewrite>
  <rules>
    <rule name="Redirect to https">
      <match url="(.*)" />
      <conditions>
        <add input="{HTTPS}" pattern="Off" />
        <add input="{REQUEST_METHOD}" pattern="^get$|^head$" />
        <add input="{HTTP_HOST}" negate="true" pattern="localhost" />
      </conditions>
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
    </rule>
  </rules>
</rewrite>

例如,我的网站域名为www.example.com。在我的项目上启用SSL后,我的网站现在是https://www.example.com。我在我的网站上为我的合作伙伴提供了一些链接,例如www.partner1.com。问题是,现在我的合作伙伴链接在他们的网址中也有https,但他们的网站没有SSL证书,这意味着当我点击他们的链接时,我被重定向到https网址,因此我有一个证书错误页面。

如何将我的域设置为仅使用https并让我的合作伙伴href链接仍然使用http?

1 个答案:

答案 0 :(得分:0)

我建议你使用同样的规则:

 <rewrite>
     <rules>
     <clear /> 
       <rule name="Redirect to https" stopProcessing="true"> <match url=".*" /> 
       <conditions> <add input="{HTTPS}" pattern="off" ignoreCase="true" /> </conditions> 
       <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" /> 
     </rule> 
</rewrite> 

因为我正在使用它,我已经检查了你的情景,它的工作完美......正如你在答案中提到的那样。

我在我的网站页面上创建了一个链接,并将该href设置为http://域,这是另一个网站。它没有改变,点击链接工作正常。这是链接代码:

 <a target="_blank" href="http:// www.jwoodmaker.com/">Test</a>

因为我已经发送了链接,其中包含了完整的详细信息。 this link