在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).

相关文章
|
网络协议 安全 网络安全
HTTP与HTTPS协议入门
HTTP协议是互联网的基石,HTTPS则是其安全版本。HTTP基于TCP/IP协议,属于应用层协议,不涉及数据包传输细节,主要规定客户端与服务器的通信格式,默认端口为80。
1102 26
HTTP与HTTPS协议入门
|
JSON 安全 网络协议
HTTP/HTTPS协议(请求响应模型、状态码)
本文简要介绍了HTTP与HTTPS协议的基础知识。HTTP是一种无状态的超文本传输协议,基于TCP/IP,常用80端口,通过请求-响应模型实现客户端与服务器间的通信;HTTPS为HTTP的安全版本,基于SSL/TLS加密技术,使用443端口,确保数据传输的安全性。文中还详细描述了HTTP请求方法(如GET、POST)、请求与响应头字段、状态码分类及意义,并对比了两者在请求-响应模型中的安全性差异。
1363 20
|
安全 网络协议 算法
HTTP/HTTPS与SOCKS5协议在隧道代理中的兼容性设计解析
本文系统探讨了构建企业级双协议隧道代理系统的挑战与实现。首先对比HTTP/HTTPS和SOCKS5协议特性,分析其在工作模型、连接管理和加密方式上的差异。接着提出兼容性架构设计,包括双协议接入层与统一隧道内核,通过协议识别模块和分层设计实现高效转换。关键技术部分深入解析协议转换引擎、连接管理策略及加密传输方案,并从性能优化、安全增强到典型应用场景全面展开。最后指出未来发展趋势将更高效、安全与智能。
815 1
|
安全 网络安全 数据安全/隐私保护
HTTP 与 HTTPS 协议及 SSL 证书解析-http和https到底有什么区别?-优雅草卓伊凡
HTTP 与 HTTPS 协议及 SSL 证书解析-http和https到底有什么区别?-优雅草卓伊凡
993 3
|
安全 搜索推荐 网络安全
HTTPS与HTTP:区别及安全性对比
HTTP和HTTPS是现代网络通信中的两种重要协议。HTTP为明文传输,简单但不安全;HTTPS基于HTTP并通过SSL/TLS加密,确保数据安全性和完整性,防止劫持和篡改。HTTPS还提供身份验证,保护用户隐私并防止中间人攻击。尽管HTTPS有额外的性能开销和配置成本,但在涉及敏感信息的场景中,如在线支付和用户登录,其安全性优势至关重要。搜索引擎也更青睐HTTPS网站,有助于提升SEO排名。综上,HTTPS已成为大多数网站的必然选择,以保障用户数据安全和合规性。
4018 1
|
JSON 网络协议 安全
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(1)-HTTP和HTTPS基础知识
【7月更文挑战第16天】本文介绍了HTTP和HTTPS协议的基本概念与作用,强调了理解HTTP协议对使用抓包工具Fiddler的重要性。HTTP是用于Web浏览器与服务器间信息传输的协议,不加密,易被截取,不适合传输敏感信息。HTTPS是HTTP的安全版,通过SSL/TLS提供加密和服务器身份验证,确保数据安全。HTTP请求包括请求行、请求头、空行和可选的请求主体,响应则有响应行、响应头、空行和响应主体。HTTP协议无状态,而HTTPS解决了安全性问题,但也带来了额外的计算开销。Fiddler作为一个强大的抓包工具,可以帮助开发者和测试人员分析HTTP/HTTPS通信,理解请求和响应的结构。
1101 14
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(1)-HTTP和HTTPS基础知识
|
前端开发 JavaScript 数据库
https页面加载http资源的解决方法
https页面加载http资源的解决方法
919 5
|
Web App开发 Linux 应用服务中间件
【DrissionPage】Linux上如何将https改为http
通过上述步骤,可以在Linux上将DrissionPage从HTTPS改为HTTP。关键在于修改DrissionPage配置、代码中的HTTPS设置、URL以及Web服务器配置,确保所有部分都正确使用HTTP协议。通过合理配置和测试,能够确保系统在HTTP环境下稳定运行。
823 1
|
前端开发 JavaScript 数据库
https页面加载http资源的解决方法
https页面加载http资源的解决方法
634 4

热门文章

最新文章

推荐镜像

更多