Apache自动跳转到 HTTPS


网站根目录新建 .htaccess
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]

301跳转


<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L]
</IfModule>


站点绑定多个域名,只允许www.kison.cn 跳转
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^example.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]
###把网址更改为自己的###

高级用法 (可选)
RewriteEngine on
# 强制HTTPS
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{SERVER_PORT} 80
# 某些页面强制
RewriteCond %{REQUEST_URI} ^something_secure [OR]
RewriteCond %{REQUEST_URI} ^something_else_secure
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
# 强制HTTP
RewriteCond %{HTTPS} =on [OR]
RewriteCond %{SERVER_PORT} 443
# 某些页面强制
RewriteCond %{REQUEST_URI} ^something_public [OR]
RewriteCond %{REQUEST_URI} ^something_else_public
RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

IIS6 自动跳转到HTTPS

第一步: IIS6中,站点属性-》目录安全性-》编辑中把“要求安全通道(SSL)”勾选上即可。

第二步:  打开自己网站根目录, 例如 d:webroot,  在根目录新建一个名为  https.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>

第三步:  IIS6中, 站点属性 -》 自定义错误 -》选择 403.4 -》修改文件路径为  d:webroothttps.htm


IIS6 配置301跳转到https方法

一、确认已经配置好SSL证书

二、将主机头值修改一下,随便输入即可。这里以主机头为”ssl”为例。

三、新建一个站点,名称可自由设置,主机头填写为您的域名。

四、请将路径选择为您的网站目录,设置访问权限为只读即可。

五、创建好后站点后,选择该站点,点击鼠标右键--“属性”--“主目录”,按照下图设置,选中“重定向到URL”,重定向的地址是“https://域名$S$Q”并勾选“上面输入的准确URL”和“资源的永久重定向”两个选项即可。


IIS7 IIS8 自动跳转到HTTPS

IIS7需要先确认是否安装 “URL 重写” 或者 “URL Rewrite” 模块 , 如果您已经安装可以跳过

“URL重写” 模块下载地址

微软下载地址(64位):http://www.microsoft.com/zh-cn/download/details.aspx?id=7435
微软下载地址(32位):http://www.microsoft.com/zh-cn/download/details.aspx?id=5747

第一步: 选择站点,  “URL 重写”,如果安装的是英文版的 应该是【Url Rewrite】

第二步: 添加 “ 空白规则”

第三步:添加规则


名称 : HTTPS
匹配URL 模式: (.*)
添加条件:    条件: {HTTPS}  模式: off

操作类型选择:重定向
重定向URL: https://{HTTP_HOST}/{R:1}

然后保存即可

高级版(直接把伪静态添加到web.config)

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>

Nginx 自动跳转到HTTPS

方法一: 
rewrite ^(.*)$ https://$host$1 permanent;

方法二:
适用于 80端口和443 配置在同一个 server{}内
if ($server_port = 80) {
rewrite ^(.*)$ https://$host$1 permanent;
}

其他情况, 站点绑定很多域名,只让某个域名跳转:
set $redirect_https 1;
if ($server_port = 80) {
set $redirect_https "${redirect_https}2";
}
if ($http_host = 'www.gworg.com') {
set $redirect_https "${redirect_https}3";
}
if ($http_host = 'gworg.com') {
set $redirect_https "${redirect_https}3";
}
if ($redirect_https = "123") {
rewrite ^(.*)$ https://$host$1 permanent;
}

配置示例:

server {
listen       80;
server_name  www.gworg.com;
rewrite ^ https://$http_host$request_uri? permanent;
}
server {
listen 443;
ssl on;
ssl_certificate /etc/ssl/cacert.pem;
ssl_certificate_key /etc/ssl/privkey.pem;
server_name www.gworg.com;  
server_tokens off;
location / {
fastcgi_param   HTTPS               on;
fastcgi_param   HTTP_SCHEME         https;
}
}

tomcat 自动跳转到HTTPS

把下面内容插入到 项目web.xml 文件中
<security-constraint>
<web-resource-collection>
<web-resource-name>Getssl</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>

使用程序强制跳转到HTTPS

兼容:
<!-- 如果检测到是http页面,则自动跳转到对应的https页面 -->
<script type="text/javascript">
if (document.location.protocol != "https:") { 
        location.href = location.href.replace(/^http:/,"https:");
}
</script>

ASP:
<%
If Request.ServerVariables("SERVER_PORT")=80 Then
Dim strSecureURL
strSecureURL = "https://"
strSecureURL = strSecureURL & Request.ServerVariables("SERVER_NAME")
strSecureURL = strSecureURL & Request.ServerVariables("URL")
Response.Redirect strSecureURL
End If
%>

PHP:
if(!isset($_SERVER['HTTPS'])||!$_SERVER['HTTPS']){
$url ='https://'. $_SERVER['HTTP_HOST']. $_SERVER['REQUEST_URI'];
header('Location: '. $url);exit;
}

Tags:SSL, HTTPS, 网站证书