我有一个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。任何帮助,将不胜感激!
答案 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