Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Apache 强制 HTTP 全部跳转到 HTTPS

Apache 强制 HTTP 全部跳转到 HTTPS

作者头像
阳光岛主
发布于 2018-05-17 01:48:19
发布于 2018-05-17 01:48:19
3.9K00
代码可运行
举报
文章被收录于专栏:米扑专栏米扑专栏
运行总次数:0
代码可运行

米扑博客最新写了一篇博客《Apache 强制 HTTP 全部跳转到 HTTPS》,分享出来

更多经典技术博客,请见我的米扑博客:https://blog.mimvp.com

.htaccess 在每一层独立服务根目录下都存在,例如:

全部网站根目录为   /var/www/html/.htaccess

米扑博客根目录位   /var/www/html/mimvp-wordpress/.htaccess

米扑论坛根目录位   /var/www/html/mimvp-discuz/.htaccess

米扑学习根目录位   /var/www/html/mimvp-study/.htaccess

HTTP 80 强制转 HTTPS

全站采用https协议访问,所以需要http重定向到https,只需要在.htaccess加入下面规则

在相应的网站根目录新建 .htaccess

例如,在米扑博客的网站根目录下,新建   

vim   /var/www/html/mimvp-wordpress/.htaccess

123

RewriteEngine OnRewriteCond %{SERVER_PORT} 80RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]

或者

123

RewriteEngine OnRewriteCond %{HTTPS} !=onRewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R,L]

强制301重定向 HTTPS

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L]
</IfModule>

站点绑定多个域名

只允许www.gworg.com 跳转

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^example.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]

###把网址更改为自己的###

高级用法 (可选)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RewriteEngine on
# 强制HTTPS
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{SERVER_PORT} 80
# 某些页面强制
RewriteCond %{REQUEST_URI} ^something_secure [OR]
RewriteCond %{REQUEST_URI} ^something_else_secure
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
# 强制HTTP
RewriteCond %{HTTPS} =on [OR]
RewriteCond %{SERVER_PORT} 443
# 某些页面强制
RewriteCond %{REQUEST_URI} ^something_public [OR]
RewriteCond %{REQUEST_URI} ^something_else_public
RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Apache mod_rewrite实现HTTP和HTTPS重定向跳转

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

把这段代码放在.htaccess文件,即可实现HTTP到HTTPS的重定向。

123456

<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://blog.mimvp.com/$1 [R=301,L]</IfModule>

而当你又想用回HTTP的时候,反过来就可以了:

123456

<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{SERVER_PORT} 443 RewriteRule ^(.*)$ https://blog.mimvp.com/$1 [R=301,L]</IfModule>

其中R=301表示Moved Permanently,即告诉搜索引擎或者浏览器下去直接访问后者的地址,

如果只是试验性地重定向,可以使用R=302(Found),临时跳转

更多30x状态,请见米扑博客:HTTP协议中POST、GET、HEAD、PUT等请求方法总结

VirtualHost 添加重定向

实测以上方法,对于我的需求场景,都无效

我的项目场景:

1. 在我的根目录下 /var/www/htmp/

2. 配置有多个网站,如米扑博客(/var/www/htmp/mimvp-blog/)、米扑论坛(/var/www/htmp/mimvp-forum/)、米扑学习(/var/www/htmp/mimvp-study/)等

3. 对于米扑博客的http请求,全部定向到https博客;对于米扑论坛的http请求,全部定向到https论坛;

最后,解决方案是在 VirtualHost 节点里,添加如下配置:

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

完整配置参数如下:

1234567891011121314

# blog<VirtualHost *:80>    ServerAdmin yanggang_2050@163.com    DocumentRoot /var/www/html/wordpress    ServerName blog.mimvp.com     RewriteEngine on    RewriteCond   %{HTTPS} !=on    RewriteRule   ^(.*)  https://%{SERVER_NAME}$1 [L,R]     DirectoryIndex index.php    ErrorLog /var/log/blog.mimvp.com-error_log    CustomLog /var/log/blog.mimvp.com-access_log common</VirtualHost>

在米扑论坛、米扑学习等 VirtualHost 节点里,都添加如上配置,问题解决。

米扑博客效果,全部自动跳转到 https :

https://blog.mimvp.com

https://blog.mimvp.com/about/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年01月06日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Apache之Rewrite和RewriteRule规则梳理以及http强转https的配置总结(完整版)
一. 简单实例介绍 一般来说,apache配置好http和https后,如果想要做http强转到https,需要设置url重定向规则,大致需要下面几个步骤即可完成配置:
洗尽了浮华
2018/09/28
32.6K0
配置Apache把子目录设置为二级站点
话说这个教程在网上找了半天硬是都不对,研究半天终于找到一个真正可行的方法,赶紧记一下。。
mythsman
2022/11/14
1.9K0
.htaccess 强制 HTTP 全部跳转到 HTTPS
全站采用https协议访问,所以需要http重定向到https,只需要在.htaccess加入下面规则
星哥玩云
2022/07/16
8750
访问Apache服务器自动跳转到https协议
版权声明:转载注明出处 https://blog.csdn.net/weixin_42514606/article/details/89367932
叉叉敌
2019/05/05
7820
centos7 apache一站式https设置
然后去阿里云申请免费的ssl证书,方法我就不说了,可自行百度。之后再/etc/httpd/下建cert目录,之后我们把下载的证书传到cert目录 下载安装
云计算小黑
2021/06/16
4120
Apache mod_rewrite实现HTTP和HTTPS互相重定向跳转
‍‍‍‍‍‍‍‍当你的站点使用了HTTPS之后,你可能会想把所有的HTTP请求(即端口80的请求),全部都重定向至HTTPS(即端口443)。这时候你可以用以下的方式来做到:(Apache mod_rewrite) <IfModule mod_rewrite.c>  RewriteEngine On  RewriteBase /  RewriteCond %{SERVER_PORT} 80  RewriteRule ^(.*)$ https://jb51.net/$1 [R=301,L] </IfModu
96php.cn
2018/04/28
1.5K0
教你把域名解析到二级目录或以下
其实原理也很简单,就是利用.htaccess伪静态文件绑定域名到子目录.但是前提你的主机服务器【或者空间】必须支持apache的rewrite功能,只有这样才能使用.htaccess伪静态文件,如果你的空间是Linux服务器 一般默认都是开启了的。 第一步:绑定域名到你空间 ①登陆域名管理台(如DNSPod) 把需要绑定的域名 解析到你的空间; ②登陆虚拟主机/空间管理台(如万网) 绑定域名到空间; 注意,第一步标题是绑定域名到你空间,比如我绑定 blog.xbbai.site
奶糖味的代言
2018/04/16
7.2K0
Apache mod_rewrite实现HTTP和HTTPS重定向跳转
当你的站点使用了HTTPS之后,你可能会想把所有的HTTP请求(即端口80的请求),全部都重定向至HTTPS(即端口443)。这时候你可以用以下的方式来做到:(Apache mod_rewrite)
用户8965210
2021/10/14
1.5K0
网站如何实现https重定向(301)到http
对于个人网站站注册比较少的,服务器配置不是很好的,没必要https,https跳转到http是要时间的,会影响网站打开的速度。免费的https每年都要更换。个人博客网站https有一段时间了,而且很多页面都有收录排名,现在已去掉https了,用户搜索从https进网站无法打开页面。去掉后https对面网站有一定的影响,所有这里就要实现访问https自动跳转到http
博客趣
2023/12/12
2.1K1
网站如何实现https重定向(301)到http
网站启用SSL自动301跳转到HTTPS教程
服务器搭建之后就一直在使用宝塔,先抛出安全性能之外,宝塔真的是不错啦,我之前用过许多的控制面板(没办法,技术能力有限,只能用带控制面板的)最好发现还是宝塔比较符合大众的操作习惯,当然收费的amh我也用过,效果不如宝塔,宝塔有很多功能已经集成了,不需要额外的配置文件,比如今天说的启用SSL后,让网站的http自动跳转到https上。如果你的主机不是宝塔,那么参照以下教程试试,也许会有惊喜(记得备份,否则惊喜可能变成惊吓),先说Apache强制301跳转到https教程:
李洋博客
2021/06/15
1.5K0
SEO分享:彻底禁止搜索引擎收录非首选域名的方法
众所周知,绝大多数网站都会有一个首选域名,从用户体验考虑,通常站长们还会另外解析一个域名,并设置 301 重定向。例如,用户未输入 www 的时候,仍然可以访问到我们的网站,就像访问 http://b
张戈
2018/03/23
4.7K0
http自动跳转https的配置方法
Apache服务器: 如果需要整站跳转,则在网站的配置文件的标签内,键入以下内容:
await
2021/09/09
1.9K0
利用.htaccess绑定子域名到子目录
一般情况下,一台虚拟主机只允许绑定一个域名到根目录下。 使用过emlog的人 应该对其中的静态链接应该不陌生 它就是典型的利用.htaccess文件来对网页进行域名转向。 利用.htaccess绑定域名到子目录,前提你的空间服务器必须支持apache的rewrite功能,只有这样才能使用.htaccess。如果你的空间是Linux服务器 一般默认都开启了的。即可以实现绑定域名到子目录、一个空间多个站点。 下面是以 link.52ecy.cn 绑定到子目录link为例的.htaccess代码. <I
Youngxj
2018/06/06
3.7K0
Nginx 重定向所有子域名到www
vim .htaccess  或  vim  /var/www/html/.htaccess
阳光岛主
2019/02/18
7K0
Nginx 重定向所有子域名到www
.htaccess伪静态规则
Apache的 mod_rewrite是比较强大的,在进行网站建设时,可以通过这个模块来实现伪静态。
阿珏
2018/08/02
5.9K0
利用Apache的. htaccess完美解决301重定向.htaccess文件实现301重定向常用的七种方法
使用.Htaccess文件实现301重定向常用的七种方法 301重定向对广大站长来说并不陌生,从网站建设到目录优化,避免不了对网站目录进行更改,在这种情况下用户的收藏夹里面和搜索引擎里面可能保存的还是老的地址,在打开这些链接时会无法显示页面出现404的错误,造成很差的用户体验并失去了很多流量,今天笔者就给大家分享一下实现301重定向的七种方法。 从搜索引擎优化的角度来看,目前301重定向是网站目录更改后重新定向最为可行的一种办法。在你更改地址使用了301重定向后,搜索引擎只会对新地址进行索引,同时会把旧地址下原来收录的链接转移到新地址下,而上述的这些操作并不会影响到网站在搜索引擎的排名。 实现301重定向最直接的方法是编辑.htaccess文件,想了解关于htaccess文件使用方法,请点此查看。园子需要提醒你的是,在对.htaccess文件进行操作之前,一定要备份好原来的.htaccess文件,以避免修改出错带来不必要的麻烦。 1.重定向Domain.Com到Www.Domain.Com 这种重定向非常常见,最终目的是实现域名的唯一性,也是seo必须要做的。实现方法是在.htaccess文件中加入以下规则: 代码如下: 1 2 3 RewriteEngine On RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC] RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] 注:使用这种301重定向方式后,当你打开类似domain.com的网址后会自动定向到www.domain.com。 2.重定向Www.Domain.Com到Domain.Com 这种操作刚好和上面的域名显示是相反的,规则如下: 代码如下: 1 2 3 RewriteEngine On RewriteCond %{HTTP_HOST} !^domain.com$ [NC] RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301] 注:使用此301重定向方式,当你打开类似www.domain.com的网址后会自动定向到domain.com。 3.重定向Olddomain.Com 到 Newdomain.Com 这种操作经常用于更换域名时用到,很多站长因为种种原因可能要为站点更换域名,此时多采用以下规则来实现重新定向: 代码如下: 1 2 3 4 RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} !olddomain.com$ [NC] RewriteRule ^(.*)$ http://newdomain.com/$1 [L,R=301] 注:当用户打开老的域名后,会自动重定向到新的域名下的站点,此时域名显示格式为不带www.的格式。 4.重定向Olddomain.Com 到 Www.Newdomain.Com 这种操作是基于第三种方式的改良,只是显示网址显示为带www.的那种。 代码如下: 1 2 3 RewriteEngine On RewriteCond %{HTTP_HOST} !olddomain.com$ [NC] RewriteRule ^(.*)$ http://www.newdomain.com/$1 [L,R=301] 注:当用户打开老的域名后,会自动重定向到新的域名下的站点,并且网址显示格式为带www.的格式。 5.重定向Domain.Com/File/File.Php 到 Otherdomain.Com/Otherfile/Other.Php 这种操作针对于更改一个域名的同时,网站目录路径也发生变化的情况下使用,规则如下: 代码如下: 1 2 RewriteCond %{HTTP_HOST} ^www.domain.com$ RewriteRule ^file/file.php$ http://www.otherdomain.com/otherfile/other.php [R=301,L] 注:当用户访问老的域名路径时,会重新定向到新的域名新的路径下。 6.IIS服务器下实现301重定向 具体方法如下:打开internet信息服务管理器,在欲重定向的网页或目录上按右键,选中“重定向到URL”, 在对话框中输入目标页面的地址,切记要选中“资源的永久重定向”最后点击“应用”即可。 注:再次提醒你,一定要选中“资源的永久重定向”。 7.Apache服务器实现301重定向 在Apache服务器实现301重定向的方法园子在以前的文章中提到过,只需要在.htaccess文件中加入以下规则: 代码如下: 修改.htaccess文件
双面人
2019/04/10
3.5K0
一台虚拟主机实现多站点建站
        一台虚拟主机服务商的要求都是只能存放一个站点,而我们这些小站长,博主之类;买一台一般500m-1g的虚拟主机完全够用了!但是准备一个新的站点,又要去买新的虚拟主机,浪费钱,不干!我们就像是否可以在一个虚拟主机上就像多站点建站!
十月梦想
2018/08/29
3.5K0
Apache中 RewriteRule 规则参数介绍
大家好,又见面了,我是你们的朋友全栈君。Apache中 RewriteRule 规则参数介绍
全栈程序员站长
2022/08/27
12.6K0
WordPress强制跳转https教程
这时候我们在访问自己WordPress站点的时候就强制跳转到https小绿标锁状态了。
陌涛
2019/05/22
2.4K0
apache强制跳转https
原文地址:http://blog.chinaunix.net/uid-21516619-id-1825046.html
繁花云
2018/07/31
8711
相关推荐
Apache之Rewrite和RewriteRule规则梳理以及http强转https的配置总结(完整版)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验