子域的 HTTPS 转发

HTTPS forwarding for subdomain

我有一个域,让我们把它设为 example.com,还有一个子域 sub.example.com。对于子域,我有 SSL 证书,对于主域,我没有。在我的服务器上,我的主域有一个 .htaccess 文件,但我的子域有一个 none 文件。我如何在此文件中指定从 http://sub.example.com 转发到 https://sub.example.com?还是我的子域文件夹中需要第二个 .htaccess 文件?

我假设您的子域托管在主域文档根目录之外的子目录中?所以主域的 .htaccess 文件在父目录中? (如果没有,那么您将需要在子域的根目录中添加另一个 .htaccess 文件。)

在主域的 .htaccess 文件顶部尝试以下 mod_rewrite 指令。

RewriteEngine On

RewriteCond %{HTTP_HOST} ^sub\.example\.com [NC]
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=302,L]

这是一个临时的 (302) 重定向。仅当您确定它工作正常时才将其更改为 301。 (永久重定向由浏览器硬缓存,因此会使测试出现问题。)

您只需要在文件顶部添加一个 RewriteEngine 指令。

更新: 如果文件结构如上所述(即子域位于主域文档根目录之外的子目录中 - .htaccess 文件所在的子目录位于),那么您将需要使用 REQUEST_URI 服务器变量来引用 URL 路径,而不是对捕获的 RewriteRule pattern,因为捕获的反向引用将包含 子目录,它不是 URL 路径的一部分。