Apache由http自动跳转到https的多种方法
本文主要与大家分享几种自动从http跳转到https的方法。 当您的站点使用 HTTPS 时,您可能希望将所有 HTTP 请求(即对端口 80 的请求)重定向到 HTTPS。 这时你可以通过以下方式进行:
启用https后,还需要保证之前的http端口可以打开。 http的80端口有两个URL,所以这就导致需要同时为带www和不带www的原域名指定一个https URL。 您需要执行两次 301 重定向。 这其实很简单。 夏天博客的方法是直接添加两个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 URL就可以了。 当然,这种全站做301的方法是比较暴力的。 通常,我们只需要把主域名设为301即可。我这里是因为原来有两个域名。
PHP中文网还提供了其他一些从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,那么就会应用这条规则。
这实现了:
当访问或等页面时页面访问自动转跳www,会自动跳转到或,但访问时,不会跳转页面访问自动转跳www,也就是说和这两个地址都可以访问。
PS:接下来我们看一下从http自动跳转到https的方法。 具体内容如下:
修改根目录。 文件
Options +FollowSymlinks RewriteEngine On #thinkphp去掉index.php RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] #http自动跳转到https RewriteCond %{SERVER_PORT} !^443$ #只有匹配对应的域名才会跳转 RewriteCond %{SERVER_NAME} ^hrsc.cc|www.hrsc.cc$ RewriteRule (.*) https://%{SERVER_NAME}/$1 [R]
总结
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。