在htaccess中仅将HTTP子域重定向到HTTPS子域

JJ1*_*100 4 apache .htaccess mod-rewrite redirect

如何仅将 HTTP 子域重定向到 HTTPS 子域.htaccess?主站点在 WordPress 中,并且已经通过插件重定向到 HTTPS,但子域是 PHP 创建的站点。我在这里查看并没有看到最终的解决方案。

我复制并粘贴了这个建议的代码,但它什么也没做:

#Redirect Subdomain
RewriteEngine on
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$ [NC]
RewriteRule .? https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Run Code Online (Sandbox Code Playgroud)

MrW*_*ite 6

RewriteEngine on
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$ [NC]
RewriteRule .? https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Run Code Online (Sandbox Code Playgroud)

这将创建一个重定向循环(如果执行的话)。为了从 HTTP 重定向到 HTTPS,您需要首先检查您尚未使用 HTTPS(否则您将获得重定向循环)。

这些指令需要.htaccess放在子域的文档根目录中。或在顶部根(WordPress的)的.htaccess,如果子域指向主要网站的文档根目录文件。重要的是重定向必须WordPress 前端控制器之前进行。

这也假设您的 SSL 证书直接安装在您的应用程序服务器上,而不是代理。

请尝试以下操作:

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com [NC]
RewriteRule .? https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Run Code Online (Sandbox Code Playgroud)

这会检查HTTPS不包含“on”的内容,并且在重定向到同一主机上的 HTTPS 之前正在请求子域。

尽管如果 WP 只是重定向主域,那么您可以执行所有这些操作.htaccess,只需删除检查HTTP_HOST. 尽管如果您有其他不应重定向到 HTTPS 的子域,请更改CondPattern以仅匹配子域或主域(以及 www 子域)。例如:

RewriteCond %{HTTP_HOST} ^((subdomain|www)\.)?example\.com [NC]
Run Code Online (Sandbox Code Playgroud)