1. 首页 > 快讯

Apache中将HTTP重定向至HTTPS-apache重定向

不像HTTP以明文格式发送和返回请求和响应,HTTPS使用TLS/SSL来加密客户端和服务器之间的通信内容。

[[311936]]

使用HTTPS而不是HTTP有许多优点,比如:

  • 所有数据都是双向加密的。因而,敏感信息即使遭拦截也无法被读取。
  • 谷歌Chrome浏览器和所有其他流行的浏览器会将你的网站标为安全网站。
  • HTTPS让你可以使用HTTP/2协议,从而大大改善网站性能。
  • 谷歌偏爱HTTPS网站。如果网站内容通过HTTPS来提供,你网站的排名会更高。

在Apache中,有几种方法可以重定向至HTTPS。如果你拥有访问Apache在其中运行的Linux服务器的root权限,首选方法是在域名的虚拟主机配置文件中设置重定向。否则,可以在域名的.htaccess文件中设置重定向。

一些控制面板(比如cPanel)让你可以通过点击几下鼠标强制进行HTTPS重定向。

使用虚拟主机将HTTP重定向至HTTPS

Apache虚拟主机定义了服务器上托管的一个或多个域名的设置。在虚拟主机指令中,你可以指定网站文档root(包含网站文件的那个目录)、为每个网站创建单独的安全策略、使用不同的SSL证书、配置重定向等等。

将SSL证书安装到域名上时,通常会有针对该域名的两个虚拟主机指令。第一个面向端口80的网站的HTTP版本,另一个面向端口443的HTTPS版本。

在基于Red Hat的发行版(比如CentOS和Fedora)中,虚拟主机文件存储在/etc/httpd/conf.d中。在Debian及其衍生版本(比如Ubuntu)上时,文件存储在/etc/apache2/sites-available目录中。

要将网站重定向至HTTPS,使用Redirect指令,如下例所示:

  1. <VirtualHost *:80>  
  2.   ServerName example.com 
  3.   ServerAlias www.example.com 
  4.   Redirect permanent / https://example.com/ 
  5. </VirtualHost> 
  6. <VirtualHost *:443> 
  7.   ServerName example.com 
  8.   ServerAlias www.example.com 
  9.   Protocols h2 http:/1.1 
  10.   # SSL Configuration 
  11.   # Other Apache Configuration 
  12. </VirtualHost> 

不妨解释一下代码。我们使用两个虚拟主机指令,一个用于HTTP版本的网站,一个用于HTTPS版本的网站。

  • VirtualHost *:80—Apache服务器在端口80(HTTP)上侦听指定域名的入站连接。
  • VirtualHost *:443—Apache服务器在端口443(HTTPS)上侦听指定域名的入站连接。

ServerName和ServerAlias指令指定虚拟主机的域名。 确保将其换成你的域名。

HTTP虚拟主机中高亮的一行:Redirect permanent / https://example.com/将流量重定向至网站的HTTPS版本。

通常,你还希望将网站的HTTPS www版本重定向至非www,反之亦然。这是一个示例配置:

  1. <VirtualHost *:80>  
  2.   ServerName example.com 
  3.   ServerAlias www.example.com 
  4.   Redirect permanent / https://example.com/ 
  5. </VirtualHost> 
  6. <VirtualHost *:443> 
  7.   ServerName example.com 
  8.   ServerAlias www.example.com 
  9.   Protocols h2 http:/1.1 
  10.   <If "%{HTTP_HOST} == 'www.example.com'"
  11.     Redirect permanent / https://example.com/ 
  12.   </If> 
  13.   # SSL Configuration 
  14.   # Other Apache Configuration 
  15. </VirtualHost> 

HTTPS虚拟主机内的代码(高亮的那一行)检查请求报头是否含有www域名、重定向至非www版本。

每当你更改配置文件,都需要重新启动或重新加载Apache服务,以使更改生效:

Debian和Ubuntu:

  1. sudo systemctl reload apache2  
  2. CentOS和Fedora: 
  3. sudo systemctl reload httpd  

使用.htaccess将HTTP重定向至HTTPS

.htaccess是Apache Web服务器基于目录的配置文件。该文件可用于定义Apache如何从文件所在的目录中提供文件以及启用/禁用其他功能。

.htaccess文件通常位于域名根目录中,但你可以将其他.htaccess文件放在子目录中。

该方法要求将mod_rewrite模块加载到Apache服务器上。默认情况下,该模块加载到大多数服务器上。可能的话,最好在虚拟主机中创建重定向,因为这更简单更安全。

要将所有HTTP流量重定向至HTTPS,请打开root .htaccess文件,为它添加以下代码:

  1. RewriteEngine On 
  2. RewriteCond %{HTTPS} off 
  3. RewriteRule ^(.*)$ https://example.com/$1 [L,R=301] 

以下是代码的含义:

  • RewriteEngine On—启用重写功能。
  • RewriteCond %{HTTPS} off—检查HTTP连接,如果条件满足,就执行下一行。
  • RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]—将HTTP重定向至HTTPS,状态代码为301(永久移动)。确保更改了域名。

下面这个例子有一个额外的条件,检查请求是否以www开始。用它迫使所有访客使用网站的HTTPS非www版本:

  1. RewriteCond %{HTTPS} off [OR
  2. RewriteCond %{HTTP_HOST} ^www\.example\.com [NC] 
  3. RewriteRule ^(.*)$ https://example.com/$1 [L,R=301] 

结束语

在Apache中,将HTTP重定向至HTTPS的首选方法是在域名的虚拟主机中配置301 redirect。

原文标题:Redirect HTTP to HTTPS in Apache

 

用户评论

伪心

厉害!现在网站访问都应该用 HTTPS 了,这么做非常重要

    有17位网友表示赞同!

失心疯i

我知道了,原来 apache 还能做到这个功能啊,以前没注意过

    有12位网友表示赞同!

■□丶一切都无所谓

这样可以更好地保护用户数据安全确实很不错

    有19位网友表示赞同!

苏莫晨

学习学习,以后自己也能配置Apache实现这个功能

    有6位网友表示赞同!

容纳我ii

HTTPS 真是一定要的,现在大多数浏览器都提示了嘛

    有15位网友表示赞同!

你是梦遥不可及

apache 越来越强大,的功能越来越多好用到爆

    有14位网友表示赞同!

太难

网站安全性越来越重要了,这篇文章正好提醒一下

    有13位网友表示赞同!

嘲笑!

配置 HTTPS 看起来难度还是蛮大的啊,需要好好研究下

    有9位网友表示赞同!

走过海棠暮

现在很多网站都支持HTTPS了,真是个值得鼓励的趋势!

    有8位网友表示赞同!

▼遗忘那段似水年华

保护用户隐私很重要,这个功能确实好实用

    有9位网友表示赞同!

各自安好ぃ

文章讲解的很详细,能理解Apache怎么实现HTTP重定向至HTTPS

    有5位网友表示赞同!

我的黑色迷你裙

以后建站一定要用 HTTPS 协议,现在已经成标配了

    有17位网友表示赞同!

你与清晨阳光

HTTPS 比 HTTP 安全多了,应该大力推广使用

    有9位网友表示赞同!

代价是折磨╳

感谢分享!这篇文章非常帮到我了,让我对 Apache 有更深了解

    有15位网友表示赞同!

还未走i

看来 HTTPS 的未来还是很广阔的,越来越多的网站都在采用它

    有9位网友表示赞同!

她的风骚姿势我学不来

为了数据安全,配置 HTTPS 确实很有必要

    有13位网友表示赞同!

念旧是个瘾。

学习了学习了!一定要试试Apache 中实现HTTP重定向至HTTPS的功能

    有8位网友表示赞同!

ˉ夨落旳尐孩。

文章内容很实用的,能让我更好地理解 Apache 的功能

    有18位网友表示赞同!

像从了良

以后访问网站的时候也要注意看是不是用了 HTTPS,这样才能更安全些

    有19位网友表示赞同!

仅有的余温

现在做网站,配置 HTTPS 协议是必不可少的

    有8位网友表示赞同!

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/7889.html

联系我们

在线咨询:点击这里给我发消息

微信号:666666