Home >Backend Development >PHP Tutorial >Several methods for Apache http to automatically jump to https

Several methods for Apache http to automatically jump to https

怪我咯
怪我咯Original
2017-01-16 14:11:102692browse

当你的站点使用了HTTPS之后,你可能会想把所有的HTTP请求(即端口80的请求),全部都重定向至HTTPS。这时候你可以用以下的方式来做到:

在启用了 https 之后,还要保证之前的 http 端口可以打开,http 的 80 端口是有两个网址的,所以这就导致需要把原来的带 wwww 和不带 www 的域名同时指定一个 https 网址上面,需

要做两个 Apache 的301重定向,这个其实是很简单的,夏日博客的做法是直接在 .htaccess 文件中添加两个 301 即可,如下所示:

rewritecond %{http_host} ^www.php.cn [nc]  
RewriteRule ^(.*)?$ https://www.php.cn/$1 [R=301,L]  
RewriteCond %{SERVER_PORT} !^443$  
RewriteRule ^(.*)?$ https://www.php.cn/$1 [R=301,L]


第一个 301 很自然就是带 www 的跳转到新的 https 上面了,而下面的301重定向则是判断如果端口不是80的话,则进行重定向,这样的话,带www和不带www的域名就一起跳转到 https 一个网址上面了,当然这种全站做301的方法是比较暴力的,通常情况下我们只要把主域名做个301就可以了,我这里是因为启用了原来的两个域名。

PHP中文网还手机了一些其它的 Apache http 跳转到 https 的方法,仅供参考:

方法1

RewriteEngine On  
RewriteBase /  
RewriteCond %{SERVER_PORT} 80  
RewriteRule ^(.*)$ https://www.php.cn/$1 [R=301,L]

方法二

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

#整站跳转

方法三

RewriteEngine on  
RewriteBase /yourfolder  
RewriteCond %{SERVER_PORT} !^443$  
#RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [R=301,L]  
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

#以上至针对某个目录跳转, yourfolder就是目录名

方法4

redirect 301  /你的网页 https://你的主机+网页

#至针对某个网页跳转

方法5

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 两个地址都可以访问

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn