在apache环境下,如何实现http协议跳转到https协议呢?
实现的步骤大致可分为以下几步:
1、打开url重定向支持
(1)在apache目录下找到httpd.conf文件,并且找到#LoadModule rewrite_module modules/mod_rewrite.so 去掉#号
(2)找到<Directory "/var/www/html">字段,如下所示:
<Directory “/var/www/html”>
...
AllowOverride None 改为 AllowOverride ALL
...
</Directory>
(3)修改后重启apache服务
2、在网站根目录下,即"/var/www/html" 目录下新建文件,文件名为(.htaccess)
.htaccess文件内容如下:
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} !^/tz.php
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R]
------------------------------------
解释:
%{SERVER_PORT} —— 访问端口
%{REQUEST_URI} —— 比如如果url是 http://localhost/tz.php,则是指 /tz.php
%{SERVER_NAME} —— 比如如果url是 http://localhost/tz.php,则是指 localhost
------------------------------------
上述规则解释:
如果访问的url的端口不是443,且访问页面不是tz.php,则应用RewriteRule这条规则。这样便实现了:访问了 http://localhost/index.php 或者 http://localhost/admin/index.php 等页面的时候会自动跳转到 https://localhost/index.php 或者 https://localhost/admin/index.php,但是访问 http://localhost/tz.php 的时候就不会做任何跳转,也就是说 http://localhost/tz.php 和 https://localhost/tz.php 两个地址都可以访问。