此主题是在运行 IIS 7.0 的 Windows 2008 服务器上创建从 HTTP 重定向到 HTTPS 的机制,是 Internet 上被广泛讨论的主题。如何这样做其实并不是我的问题。我的问题更多的是解释为什么不能使用 Windows 2008 IIS 7.0 附带的标准 HTTP 重定向模块来完成此操作。相反,需要其他更艰巨的方法。
首先,IIS 6.0 方法不需要外部可用模块,也不需要对 web.config 进行任何额外修改或进行任何类型的其他开发工作。概述如下: http://blogs.microsoft.co.il/blogs/dorr/archive/2009/01/13/how-to-force-redirection-from-http-to-https-on-iis-6-0.aspx 而且,您可以看到基本步骤是运行管理单元、获取站点上的属性并进行一些修改。瞧,您已经设置了 HTTP --> HTTP 重定向。
现在,在 IIS 7.0 平台上,事情似乎没那么简单。初步搜索后发现以下网站: http://www.sslshopper.com/iis7-redirect-http-to-https.html 它有两种不同的方法:1. 涉及安装单独可用的 Microsoft 模块 - URL 重写模块,然后将 XML 添加到 web.config。2. 自定义错误页面。...可能还有其他方法,但这些是基本方法,并且第一种方法被列为主要方法。
但是等一下...IIS 7.0 上有一个 HTTP 重定向模块。那么...为什么我不能使用 HTTP 重定向模块来做这件事呢?
这确实是我的一大疑问。我需要知道这一点,因为我的管理层会坚持让我使用 HTTP 重定向模块,并以类似于我们在 IIS 6.0 中的方式设置 HTTP 到 HTTPS 重定向。
有人可以用清晰、简单、易于理解的术语向我解释一下,为什么我和我的管理层都可以理解,为什么我需要获取 URL 重写模块并将其安装在服务器上,并按照文章建议的进行 web.config 更改,而不是简单地使用网站上已安装的 HTTP 重定向模块?
非常感谢。
答案1
内置 HTTP 重定向模块的唯一目的是返回 300 系列错误代码,以告知浏览器转到其他地方。理论上,您可以设置 301 或 302 以将流量发送到 HTTPS,但这需要大量开销,具体来说:
- 一个仅接收 HTTP 请求的单独站点
- 重定向流量的规则,这并不总是处理查询字符串等。
- 第二个站点仅接收 HTTPS 请求
与新模块(IIS 8 中的默认模块)相反,它允许您以更具体的方式为网站运行规则,并更好地控制流量路由和转换。
至于您担心直接修改 web.config 文件,有办法解决这个问题,但我现在找不到源代码。本质上,您可以将重写配置存储在网站配置位置,而不是应用程序级别。
- 机器(machine.config)
- 服务器(ApplicationHost.config)
- 网站
- 应用程序(web.config)