来自我的域的任何HTTP网址的HTTPS重定向

时间:2015-03-31 14:20:28

标签: tomcat redirect iis-7 teamcity

我有一个TeamCity构建服务器,我用于通过IIS运行的CI。我非常希望将我域上的任何网址重定向到网址的HTTPS版本。

我已按照此处链接的教程:http://www.jppinto.com/2010/03/automatically-redirect-http-requests-to-https-on-iis7-using-url-rewrite-2-0/

    <system.webServer>
        <rewrite>
            <rules>
            <clear />           


    <rule name="HTTP to HTTPS redirect" stopProcessing="true">
        <match url="(.*)" negate="true" />
        <conditions>
                    <add input="{HTTPS}" pattern="^OFF$" />
            </conditions>
        <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
    </rule>

    <rule name="Subdirectory HTTP to HTTPS redirect" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
            <match url="(^admin/.*)" />
            <conditions>
                <add input="{HTTPS}" pattern="off" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" />
    </rule> 

        </rules>           
    </rewrite>
</system.webServer>

此外,这是我在遵循本教程后的web.config的当前版本:

我真的不确定我做错了什么,因为我的域名的主要网址似乎重定向到https,但许多子域名只是404,除非您明确指定HTTPS。任何帮助,将不胜感激!

1 个答案:

答案 0 :(得分:0)

尝试创建JavaScript协议重定向并将新处理程序绑定到所有HTTP-80(非安全)侦听器,其中默认错误页面和默认文档是具有Javascript重定向的静态文件。请参阅下面的示例,包括屏幕截图(链接)。 INSECURE的默认文档也应为index.htm

<!DOCTYPE html><html>
<!-- This is index.htm -->
<head><script>
if (window.location.protocol != "https:") {
    window.location.protocol = "https:";
    window.location.reload();
}</head></html>

ASP重定向解决方案:
<% Response.Redirect "https://" & Request.ServerVariables("SERVER_NAME") & Request.ServerVariables("URL") %>

PHP重定向解决方案:
<?php header('HTTP/1.1 302 Found'); header('Location: https://' . $_SERVER[HTTP_HOST] . $_SERVER[REQUEST_URI]); ?>

IIS站点中的处理程序配置:Handler config

INSECURE网站中的错误页面: Custom error pages