当 SSL 证书安装在服务器上时,网站默认不通过安全的 HTTPS 连接可用。每次需要安全连接时,都必须在 URL 前添加 'http'。为了确保网站访问者的最大安全,最好的方法是启用从 HTTP 到 HTTPS 的自动复位向。
如果您在 Apache 上安装了某些控制面板,则必须在面板本身中设置复位向,而不是在服务器上,以避免复位向循环或模块执行不正确。您可以在 cPanel 中查看如何设置 HTTPS 复位向的指南 在这里。
如果未使用 cPanel 或其他控制面板或 GUI(图形用户界面),则应使用 Apache 复位向。
在设置复位向之前,请确保以下模块已启用。
- 要在基于 Debian(Ubuntu)的操作系统上启用模块,运行以下命令:
sudo a2enmod rewrite
sudo a2enmod ssl
- 要在基于 RHEL 的操作系统(CentOS)上启用 ssl 模块,运行:
yum install mod_ssl
在这些操作系统上,重写模块通常默认启用。主配置文件中应存在以下行:
LoadModule rewrite_module modules/mod_rewrite.so
确保它没有被注释掉。如果主配置文件中没有此行,请运行以下命令安装该模块:
sudo yum install mod_rewrite
如果两个模块都已启用,您将看到以下消息:

启用 Apache 复位向
启用 http 到 https 的 Apache 复位向有几种方法:
- 在必要的域的虚拟主机文件中启用复位向。
- 在 .htaccess 文件中启用它(先前在网站根活页夹中创建)。
- 在虚拟主机文件中使用 mod_rewrite 规则。
- 在 .htaccess 文件中使用它来强制 HTTPS。
在虚拟主机中启用 Apache 复位向
在虚拟主机文件中启用复位向比其他选项更安全和简单,因为配置对所有系统都是相似的。通常,安装 SSL 证书后,Apache 上会有两个虚拟主机文件:一个是非安全端口 80,另一个是安全端口 443。可以在端口 80 的虚拟主机中启用复位向到 HTTPS。如果您想仅对某些网页强制 HTTPS,可以使用以下指令集:
< VirtualHost *:80 >
ServerName www.yourdomain.com
DocumentRoot /usr/local/apache2/htdocs
Redirect permanent /secure https://yourdomain.com/secure
< /VirtualHost >
< VirtualHost _default_:443 >
ServerName www.yourdomain.com
DocumentRoot /usr/local/apache2/htdocs
SSLEngine On
...
< /VirtualHost >
其中 /secure 是您希望 Apache 强制使用 HTTPS 的目录。
否则,可以为网站的所有页面启用永久复位向到 HTTPS:
< VirtualHost *:80 >
ServerName www.yourdomain.com
Redirect permanent / https://www.yourdomain.com/
< /VirtualHost >
< VirtualHost _default_:443 >
ServerName www.yourdomain.com
DocumentRoot /usr/local/apache2/htdocs
SSLEngine On
...
< /VirtualHost >
使用 .htaccess 复位向到 HTTPS
作为替代方案,您可以修改 .htaccess 文件。可在放置网站文档根活页夹的 .htaccess 文件中使用以下指令来保护网站的某些页面:
Redirect permanent /secure https://www.yourdomain.com/secure
使用 Apache Rewritecond - mod_rewrite 规则
建议有经验的用户使用 mod_rewrite 规则,因为在不同系统上的确切配置可能会有所不同。mod_rewrite 规则的语法可能比较复杂——例如,如果您想将某些子活页夹复位向到 HTTPS,而这些子活页夹中还包含其他子活页夹。如果您不确定是否可以使用 mod_rewrite,最好在虚拟主机文件中启用 HTTPS 的复位向。如果您想为某些页面创建复位向,mod_rewrite 规则应如下所示:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?secure/(.*) https://%{SERVER_NAME}/secure/$1 [R,L]
针对所有目录的复位向相似,格式如下:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
注意:要设置带有 301 状态代码(永久性) 的复位向,您需要将该代码分配给 R 标志中的括号,添加 "=301"。
现在您的网站将默认可通过 HTTPS 访问。要检查复位向是否正确工作,请清除您通常使用的浏览器的缓存,然后打开您的网站或尝试在另一个浏览器中检查。
我们想强调的是,上述命令仅与基于 Debian 的 Linux 派生版(如 Ubuntu)相关。如有任何具体问题以及其他类型操作系统的问题,我们强烈建议联系您的服务器/主机提供商或参考官方服务器文档。