子域的 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 路径的一部分。
我有一个域,让我们把它设为 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 路径的一部分。