IIS7:HTTP-> HTTPS干净

时间:2008-09-05 17:23:29

标签: xml https iis-7

是否有一种干净的方法可以将所有尝试转到网站的HTTP://版本重定向到其HTTPS://等效?

6 个答案:

答案 0 :(得分:177)

我认为最干净的方式如here on IIS-aid.com所述。它只是web.config,所以如果你更改服务器,你不必记住你使用403.4自定义错误页面或其他特殊权限所经历的所有步骤,它只是有效。

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="HTTP to HTTPS redirect" stopProcessing="true">
          <match url="(.*)" />
            <conditions>
              <add input="{HTTPS}" pattern="off" ignoreCase="true" />
            </conditions>
            <action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

答案 1 :(得分:13)

我找到的最简单,最干净的解决方案是

  1. 在SSL设置中 - &gt;需要SSL

  2. 错误页面 - &gt;在403.4错误 - &gt;重定向到HTTPS站点

  3. 错误页面 - &gt;编辑功能设置... - &gt;为远程请求设置本地请求和自定义错误页面的详细错误

  4. 好处是它不需要额外的代码行。 缺点是它会将您重定向到绝对网址。

答案 2 :(得分:5)

一种干净的方式只会改变http - &gt;中的URL方案。 https并保留其他所有内容。它应该是服务器端,以便没有浏览器问题。

JPPinto.com有Step-By-Step instructions关于如何完成此操作,除了他们使用javascript(HttpRedirect.htm)而不是服务器端重定向。出于某种原因,如果您启用了“显示友好的HTTP错误消息”,则无法让IE运行javascript,默认情况下处于启用状态。该脚本的另一个问题是,即使在FF或Chrome中,重定向到路径也不起作用。该脚本始终重定向到root。 (也许我错过了一些东西,因为它应该重定向到路径。)

由于这些原因,我使用ASP页面进行重定向。缺点当然是这需要在服务器上启用经典ASP。

OpsanBlog的ASP script and instructions与IIS6配合得很好。

我在使用IIS7时遇到了一些问题。用户界面主要是问题,因为IIS7很容易错过一些东西。

  • 首先,您需要安装ASP作为 Web服务器角色功能。
  • 其次,使用虚拟目录并非如此 在IIS7中按预期工作,但我没有 尝试调试这个。相反,我将文件放在网站的根文件夹中并使用 在网址中的网址'/SSLRedirect.asp' 403.4错误页面引用它。
  • 最后,最棘手的部分,必须不强制SSLRedirect.asp 的SSL。否则你会收到403.4错误。要执行此操作,请在IIS7的“内容视图”中选择文件,然后切换到“功能视图”,以便您可以编辑单个文件的SSL设置并禁用“需要SSL”复选框。

IIS管理器应在标头中显示文件名。

答案 3 :(得分:0)

Global.asax中

protected void Application_BeginRequest()
{
if (!Context.Request.Url.AbsoluteUri.Contains("localhost") && !Context.Request.IsSecureConnection)
Response.Redirect(Context.Request.Url.ToString().Replace("http:", "https:"));
}

答案 4 :(得分:0)

我使用经典的ASP(内联网),并且在需要登录的页面上,登录包含文件会进行重定向:

type Query {
  getBooks: [Book] @allow(scopes: ["superuser"])
  getAuthors: [Author]
}

这当然不包括GET或POST数据。因此,实际上,这是对您的安全页面的干净重定向。

答案 5 :(得分:-4)

我认为'干净'就像是300重定向一样。配置很多服务器和语言here