自动 IIS6 403.4 重定向到 SSL 不起作用

Posted

技术标签:

【中文标题】自动 IIS6 403.4 重定向到 SSL 不起作用【英文标题】:Automatic IIS6 403.4 redirect to SSL not working 【发布时间】:2010-12-24 14:01:16 【问题描述】:

我的 ASP.Net 网站中有一个目录,我需要启用 SSL。对于所有其他目录,我不想启用 SSL。

使用 IIS,我为我想要使用 SSL 的文件夹选中了需要安全通道 (SS) 和 128 位加密复选框。

现在,当用户输入“http://”时,对于我的安全目录,我想自动将他们重定向到“https://”。我尝试了两种方法,都失败了。

方法 1:将 403;4 目录的 IIS 自定义错误页面更改为指向“/Intranet2/SSLRedirect.aspx”的 URL。 SSLRedirect 会将它们指向正确的站点。当我这样做时,我收到“无法从当前应用程序池执行指定的请求”错误,即使该 url 是网站的一部分并且我只有一个用于整个网站的应用程序池(不是 DefaultAppPool)。

方法2:在目录中添加web.config,覆盖403错误码。看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.web>
        <customErrors defaultRedirect="../Default.aspx" mode="On">
            <error statusCode="403" redirect="../SSLRedirect.aspx" />
        </customErrors>
    </system.web>
</configuration>

但是当我进行此更改时,我总是得到 IIS 中定义的默认 403.4。

有什么建议吗?

【问题讨论】:

【参考方案1】:

方法 1:您似乎错误地认为您只为整个网站配置了一个应用程序池。您可能有一个用于默认站点,另一个用于您正在使用的虚拟目录。您的选择是:

a) 重新配置它,以便您确实为整个网站只有一个应用程序池,

b) 从与生成错误的页面位于同一应用程序池的目录中提供错误页面

c) 调整注册表以关闭此错误:在 HKLM\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters 中将 IgnoreAppPoolForCustomErrors 设置为 1。见http://blogs.msdn.com/b/rakkimk/archive/2006/09/01/735684.aspx

方法 2:web.config 中的自定义错误仅在 asp.net 处理错误时使用。我相信 IIS 没有在这里使用 asp.net 处理引擎,因为 ssl 检查失败。所以这在这里根本行不通。

【讨论】:

以上是关于自动 IIS6 403.4 重定向到 SSL 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

将所有请求重定向到 IIS6 上的 ASP.NET MVC

IIS6 301重定向和IIS7 301重定向

iis6和iis7应该如何设置重定向?

.htaccess 使用 SSL/HTTPS 将 www 重定向到非 www

301 从 IIS 6 上的 web.config 重定向

重定向在 Apache 中不起作用,HTTP 到 HTTPS