在Apache上http强制跳转到https无效的解决办法

简介: 在Apache上http强制跳转到https无效的解决办法
前言

  公司官网备案,域名已经加了 https ,但是 http 访问会失败,需要强制跳转到 https 的页面上.这个官网实际上没什么内容就是一个静态的 html 页面加上几个图片和 css 样式,比较简单.之前 https 也是使用 Apache 来做的.

  我接下把配置失败的步骤和怎么解决(基本上都是网上别人写的博文和经验分享)这个问题的过程写一下,当然这种情况可能是个案,希望对大家有所启发.

失败的步骤

我的Apache版本是Apache/2.4.6,系统是CentOS.

网上大部分的经验分享无非以下两种方式

一. 在网站根目录添加 .htaccess 文件
  • 首先编辑httpd/conf/httpd.conf 去掉下面内容前面的#注释,使其生效
    (Apache 2.4.6 版的这个拓展貌似是已经被加载了,可以在 httpd/conf.modules.d/00-systemd.conf 文件中找到) .
LoadModule rewrite_module modules/mod_rewrite.so
  • 之后同样在conf/httpd.conf修改<Directory "/var/www/html">内容下的AllowOverride None 改为AllowOverride All
  • 然后在/var/www/html/目录(这个是网站的默认根目录,没有修改过,我的静态文件就放在下面 )下添加.htaccess文件
touch .htaccess

然后编辑文件

vi .htaccess

添加以下内容

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

或者

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R,L]
  • 重启Apache
systemctl restart httpd.service
二. 直接在conf/httpd.conf 配置
  • 重复上面的第一、二步.<略>
  • conf/httpd.conf修改<Directory "/var/www/html">内容下添加以下内容
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]

或者

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R,L]
  • 重启Apache
systemctl restart httpd.service
成功的步骤

以上两种方式都无效.实在没办法,然后偶然间看到一个使用 tomcat 来替代 Apache 的方案.步骤如下:

  • 先把tomcat/webapps/ROOT/目录下除WEB_INF之外的文件清除
  • 再把静态资源移到tomcat/webapps/ROOT/
mv /var/www/html/* /opt/tomcat/webapps/ROOT/
  • WEB_INF/web.xml末尾添加以下内容
<security-constraint>
   <web-resource-collection >
      <web-resource-name >SSL</web-resource-name>
      <url-pattern>/*</url-pattern>
   </web-resource-collection>
   <user-data-constraint>
   <transport-guarantee>CONFIDENTIAL</transport-guarantee>
   </user-data-constraint>
</security-constraint>

然后:wq 保存并退出

  • 启动Tomcat服务
tomcat/bin/startup.sh

前提是tomcat已经配置了SSL(https).

相关文章
|
15天前
|
前端开发 JavaScript 数据库
https页面加载http资源的解决方法
https页面加载http资源的解决方法
30 4
|
5月前
|
安全 网络协议 网络安全
IP代理的三大协议:HTTP、HTTPS与SOCKS5的区别
**HTTP代理**适用于基本网页浏览,简单但不安全;**HTTPS代理**提供加密,适合保护隐私;**SOCKS5代理**灵活强大,支持TCP/UDP及认证,适用于绕过限制。选择代理协议应考虑安全、效率及匿名需求。
|
2月前
|
前端开发 JavaScript 数据库
https页面加载http资源的解决方法
https页面加载http资源的解决方法
155 7
|
1月前
|
安全 应用服务中间件 网络安全
修复HTTPS升级后出现 Mixed Content: The page at 'https://xxx' was loaded over HTTPS, but requested an insecure frame 'http://xxx'. This request has been blocked; the content must be served over HTTPS. 的问题
修复HTTPS升级后出现 Mixed Content: The page at 'https://xxx' was loaded over HTTPS, but requested an insecure frame 'http://xxx'. This request has been blocked; the content must be served over HTTPS. 的问题
|
2月前
|
安全 网络安全 数据安全/隐私保护
HTTP与HTTPS协议区别及应用场景
在互联网高速发展的今天,HTTP与HTTPS作为数据传输的基石,作用至关重要。HTTP允许客户端与服务器间传输超文本文档,但其数据传输过程未加密,存在安全隐患;HTTPS则在此基础上加入了SSL/TLS协议,实现了数据加密传输,增强了安全性,广泛应用于电子商务、网上银行、政府网站及社交媒体平台等涉及敏感信息传输的领域,有效保护了用户隐私和数据安全。随着网络安全意识提升,HTTPS正逐渐成为主流。
|
4月前
|
JSON 网络协议 安全
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(1)-HTTP和HTTPS基础知识
【7月更文挑战第16天】本文介绍了HTTP和HTTPS协议的基本概念与作用,强调了理解HTTP协议对使用抓包工具Fiddler的重要性。HTTP是用于Web浏览器与服务器间信息传输的协议,不加密,易被截取,不适合传输敏感信息。HTTPS是HTTP的安全版,通过SSL/TLS提供加密和服务器身份验证,确保数据安全。HTTP请求包括请求行、请求头、空行和可选的请求主体,响应则有响应行、响应头、空行和响应主体。HTTP协议无状态,而HTTPS解决了安全性问题,但也带来了额外的计算开销。Fiddler作为一个强大的抓包工具,可以帮助开发者和测试人员分析HTTP/HTTPS通信,理解请求和响应的结构。
78 4
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(1)-HTTP和HTTPS基础知识
|
4月前
|
缓存 网络协议 算法
(二)Java网络编程之爆肝HTTP、HTTPS、TLS协议及对称与非对称加密原理!
作为一名程序员,尤其是Java程序员,那必须得了解并掌握HTTP/HTTPS相关知识。因为在如今计算机网络通信中,HTTP协议的作用功不可没,无论是日常上网追剧、冲���、亦或是接口开发、调用等,必然存在HTTP的“影子”在内。尤其对于WEB开发者而言,HTTP几乎是每天会打交道的东西。
96 10
|
3月前
|
API 开发工具 Python
【Azure Developer】使用 Azure Python SDK时,遇见 The resource principal named https://management.azure.com was not found in the tenant China Azure问题的解决办法
【Azure Developer】使用 Azure Python SDK时,遇见 The resource principal named https://management.azure.com was not found in the tenant China Azure问题的解决办法
|
4月前
|
安全 程序员 网络安全
HTTP和HTTPS的区别,你真的了解吗?
大家好,我是你们的技术小伙伴小米!今天我们来聊聊HTTP和HTTPS的区别以及HTTPS链接的建立过程,同时了解两种常见的加密算法——对称加密和非对称加密。通过这篇文章,你将深入理解这些网络基础知识,为网站安全保驾护航!
96 7
|
3月前
|
JavaScript 前端开发 Java
【Azure 环境】各种语言版本或命令,发送HTTP/HTTPS的请求合集
【Azure 环境】各种语言版本或命令,发送HTTP/HTTPS的请求合集

推荐镜像

更多