我有一个 IIS7/WinServer2008 配置,其中安装了通配符 SSL 证书 (*.mydomain.com)。Web 服务器包含多个网站,每个网站都配置为通过同一 IP(称为 IP1)的主机标头进行路由。有些网站配置为使用 SSL,有些则没有。
所以我有...
a.mydomain.com -> SSL
b.mydomain.com -> non-SSL
c.mydomain.com -> SSL
d.mydomain.com -> non-SSL
e.mydomain.com -> non-SSL
ETC...
对于上面的示例站点 A 和 C(SSL 站点),我希望将标准 HTTP URL 重定向到 HTTPS。因此,在 IIS 的根目录(红色箭头)中,我通过添加自定义状态代码 403.4(请参阅下面的设置)配置了错误页面设置。
redirectHttpToHttps.htm 文件的内容是...
<html>
<head><title>Redirecting...</title></head>
<script language="JavaScript">
function redirectHttpToHttps()
{
var httpURL= window.location.hostname + window.location.pathname + window.location.search;
var httpsURL= "https://" + httpURL;
window.location = httpsURL;
}
redirectHttpToHttps();
</script>
<body>
</body>
</html>
然后,对于 A 和 C 站点,我用 SSL 绑定(专门路由到 IP1)替换了旧绑定,并将 SSL 设置设为“需要 SSL”。
一切运行正常。网站 A 重定向http://a.mydomain.com到https://a.mydomain.com同样地,C 站点也做了同样的事情。
现在我有一个非通配符 SSL 证书可以引入到组合中。这是针对绑定到 aaa.customerdomain.com 的站点的。因此,我将证书添加到我的 IIS 服务器,并更改了 aaa.customerdomain.com 站点的绑定,以使用带有新证书和新 IP2 的 SSL 绑定。
所以现在如果我导航到https://aaa.customerdomain.com,一切都很好。但是,我不知道如何才能http://aaa.customerdomain.com重定向到 SSL 版本。
有人能帮助我以正确的方式配置 IIS,以便我可以使这一切正常工作吗?
答案1
要处理 IIS 中的各种类型的重定向,请尝试使用 URL 重写模块
http://www.iis.net/downloads/microsoft/url-rewrite
然后在每个站点的 Web 配置中添加以下配置,以实现 http 到 https 的重定向:
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions><add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
</rule>
您还可以通过 IIS url 重写模块界面使用 GUI 来完成此操作: