在IIS8中将URL从http://重写为https://

时间:2014-12-12 10:27:32

标签: url-rewriting web-config rewrite iis-8

目标:我想将多个子域名(例如http://xxx.domain.com)重定向到https://xxx.domain.com

我在IIS中有以下绑定

主机名:domain.com 港口:80 Ip地址:*

主机名:domain.com 港口:443 Ip地址:*

我的web.config中有以下重写规则

  <rules>
    <rule name="Redirect to HTTPS" stopProcessing="true">
      <match url="http://(.*)" />
      <conditions>
        <add input="{HTTPS}" pattern="^OFF$" />
      </conditions>
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
    </rule>

由于某种原因,http://xxx.domain.com提供404而不是重定向。 https://xxx.domain.com工作正常。

为什么http://xxx.domain.com给出了404?

的任何线索

2 个答案:

答案 0 :(得分:3)

我的web.config包含:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
   <system.webServer>
      <rewrite>
         <rules>
            <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>
</configuration>

这对我有用。我和你的人之间的差异是: 我的规则有&#34;启用=&#34; true&#34;在它和我的初始匹配没有&#34; http://&#34;在模式中,只是&#34;(。*)&#34; 。

答案 1 :(得分:0)

匹配代码中的网址错误,应为:

<match url=".*" />

在操作网址中,将{R:1}替换为{R:0}