Nginx服务器
在配置80端口的文件里面写入以下内容,重启Nginx即可生效。
server { listen 80; server_name localhost; rewrite ^(.*)$ https://$host$1 permanent; #老版Nginx的rewrite重定向方法 #return 301 https://$server_name$request_uri; #新版Nginx推荐无条件301跳转方法 location / { root html; index index.html index.htm; } }
rewrite指令根据表达式来重定向URL,或者修改字符串,可以应用于server,location,if环境下,每行rewrite指令最后跟一个flag标记,支持的flag标记有如下表格所示:
Flag | 作用 |
---|---|
last | 本条规则匹配完成后,停止匹配,再匹配后面的规则(因为重新发送了一次请求) |
break | 本条规则匹配完成后,停止匹配,不再匹配后面的规则(404) |
redirect | 返回302临时重定向,地址栏会显示跳转后的地址 |
permanent | 返回301永久重定向,地址栏会显示跳转后的地址(默认) |
说明:return不支持正则,所以不支持复杂的重定向;return需要指定状态码,rewrite不需要指定状态码。
Apache服务器
i.如果需要整站跳转,则在网站的配置文件的<Directory>标签内,键入以下内容:
RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [L,R]
ii.如果对某个目录做https强制跳转,则复制以下代码:
RewriteEngine on RewriteBase /yourfolder RewriteCond %{SERVER_PORT} !^443$ #RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [L,R] RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
iii.如果只需要对某个网页进行https跳转,可以使用redirect 301来做跳转!
redirect 301 /你的网页 https://你的主机+网页
IIS服务器
考虑403跳转对SEO有一定影响,因此可以采用302重定向方法实现http自动转换到https。
1、根据IIS版本,备份以下文件。
- IIS6.0备份路径:C:\WINDOWS\Help\iisHelp\common\403-4.htm
- IIS7.0以上路径:C:\inetpub\custerr\zh-CN\403.htm
2、把以下内容全部拷贝替换(403-4或403)里面所有内容,保存即可(修改之前先备份403文件)
<HTML> <HEAD> <TITLE>该页必须通过安全通道查看</TITLE> <META HTTP-EQUIV="Content-Type" Content="text/html; charset=GB2312"> </HEAD> <BODY> <script type="text/javascript"> var url = window.location.href; if (url.indexOf("https") < 0) { url = url.replace("http:", "https:"); window.location.replace(url); } </script> </BODY> </HTML>
3、勾选网站要求SSL通道访问
- IIS6版本:站点属性->目录安全性->编辑中把“要求安全通道(SSL)”勾选;
- IIS7、8版:SSL设置勾选“要求SSL”即可;
- 备注:如果IIS上面有多个站点,恢复以上操作,然后使用下面的“单页面跳转通用代码”。
LAMP或者LNMP集成环境跳转
首先在网站根目录下创建.htaccess文件,如果目录下已经有.htaccess文件,则用vi或者其他编辑器打开,在最下面添加写入如下语句即可。
RewriteEngine on RewriteBase / RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
单独页面通用代码段
以下方法较适合指定某一个子页单独https,如果网页定义了top或者boot文件,可以在这个文件里面加入。
# 在需要强制为https的页面上加入以下代码来处理http–>https <script type="text/javascript"> var url = window.location.href; if (url.indexOf("https") < 0) { url = url.replace("http:", "https:"); window.location.replace(url); } </script>
单独页面PHP页面跳转
将以下代码添加到网站php页面:
if ($_SERVER["HTTPS"] <> "on") { $xredir="https://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; header("Location: ".$xredir); }