自从网站用上了SSL证书,启用https访问后,觉得安全性和安全标识都不错。但是http开头的网址也能进去,两套规则运行十分不妥。在网上搜到强制跳转https的代码, 于是网上找了4种方法,强制http跳转到https。
第一种,修改apache的.htaccess配置文件。
代码如下:
RewriteEngine On
RewriteCond %{HTTPS} !^on$ [NC]
RewriteRule (.*) https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
第二种,修改Nginx的conf配置文件。
代码如下:
# 301方法
server {
listen 80;
server_name gzza.com ;
return 301 https://$server_name$request_uri;
}
# 端口号
server {
listen 80;
server_name gzza.com ;
if ($server_port !~ 443) {
rewrite ^(.*)$ https://$host$1 permanent;
}
# 主机名跳转
server {
listen 80;
server_name gzza.com ;
if ($host ~* "^www.gzza.com$") {
rewrite ^(.*)$ https://www.gzza.com/ permanent;
}
# 协议跳转
server {
listen 80;
server_name gzza.com ;
if ($http_x_forwarded_proto = 'http'){
return 301 https://$host$request_uri;
}
#
server {
listen 80;
server_name name.com ;
if ($host = 'gzza.com') {
rewrite ^/(.*)$ http://www.gzza.com/$1 permanent;
}
if ( $http_from_https != 'on' ) {
rewrite ^(.*) https://www.gzza.com$1 permanent;
}
第三种,修改IIS的Web.config文件。
嵌套rules在内,代码如下:
<rule name="http redirect to https" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="^OFF$" /> <add input="{HTTPS_HOST}" pattern="^(localhost)" negate="true" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" /> </rule>
第四种,利用meta的刷新作用将http跳转到https。
将下面的内容追加到index.html首页文件内
<html> <meta http-equiv="refresh" content="0;url=https://www.gzza.com/"> </html>
正文完