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

有帮助吗?

解决方案

我认为最干净的方法就是所描述的 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. 在 SSL 设置 -> 需要 SSL 中

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

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

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

一种干净的方法仅更改从 http -> https 的 URL 方案,并保持其他所有内容相同。它应该是服务器端的,这样就不会有浏览器问题。

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

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

OpsanBlog 有一个 ASP脚本和说明 与 IIS6 配合良好。

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

  • 首先,您需要安装ASP作为Web服务器角色功能。
  • 其次,使用虚拟目录在IIS7中无法正常工作,也没有尝试调试此功能。相反,我将文件放在站点的根文件夹中,并在403.4错误页面中使用url'/sslredirect.asp'将其引用。
  • 最后,也是最棘手的部分,你 不得对 SSLRedirect.asp 强制执行 SSL. 。否则您将收到 403.4 错误。为此,您在 IIS7“内容视图”中选择文件,然后切换到“功能视图”,以便可以编辑单个文件的 SSL 设置并禁用“需要 SSL”复选框。

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

全局.asax

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

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

if Request.ServerVariables("SERVER_PORT_SECURE") <> "1" or Request.ServerVariables("HTTPS") <> "on" then 
    Response.Redirect "https://" & Request.ServerVariables("SERVER_NAME") & Request.ServerVariables("URL")
end if

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

我认为“干净”是指 300 重定向。许多服务器和语言的配置 这里.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top