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

时间:2018-09-27 13:12:13

标签: apache .htaccess redirect mod-rewrite

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

我复制并粘贴了此建议的代码,但没有执行任何操作:

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

2 个答案:

答案 0 :(得分:0)

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

这将创建一个重定向循环(如果完全执行)。为了从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]

这将检查HTTPS中是否不包含“ ”,并且在重定向到同一主机上的HTTPS之前正在请求子域。

尽管如果WP只是简单地重定向主域,那么您可以在.htaccess中进行所有操作,并简单地删除检查HTTP_HOST的条件。尽管如果您还有其他不应重定向到HTTPS的子域,请更改 CondPattern 以仅与子域或主域(和www子域)匹配。例如:

RewriteCond %{HTTP_HOST} ^((subdomain|www)\.)?example\.com [NC]

答案 1 :(得分:-1)

请尝试以下操作之一:

you need to edit
    Redirect "/" "https://yourwebsite.com/"

OR

您不需要编辑以下内容

RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R=301,L]