使用 htaccess 将安全域重定向到安全子域

Redirect secured domain to secured subdomain using htaccess

我有 3 个域和一个主机。我正在尝试通过 htaccess 为我的所有三个域使用相同的主机。因此,我在我的域 linked 上创建了一个具有该名称的子域,它看起来像下面这样。

www.site1.com [主域 link 托管]

site2.site1.com [www.site2.com 的子域]

site3.site1.com [www.site3.com 的子域]

我想要实现的是,用户不应该去子域 site2.site1.com,相反他们只能去 www.site2.com,请求将被发送到 site2.site1.com在后端。

到目前为止,一切都已完成并且运行良好。唯一的问题是后来,当我在网站上添加 SSL 时。对于所有这些域和子域,我都有 SSL。如果用户访问非 ssl,那么他应该被重定向到 SSL。一些 SSL 运行良好,但是当我为所有这些添加 SSL 时,我开始收到 500 错误。

这是我的 .htaccess 文件

RewriteEngine On
DirectoryIndex index.php

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTP_HOST} ^site2.com
RewriteRule ^(.*) https://site2.site1.com/ [P]
RewriteCond %{HTTP_HOST} ^www.site2.com
RewriteRule ^(.*) https://site2.site1.com/ [P]

RewriteCond %{HTTP_HOST} ^site3.com
RewriteRule ^(.*) https://site3.site1.com/ [P]
RewriteCond %{HTTP_HOST} ^www.site3.com
RewriteRule ^(.*) https://site3.site1.com/ [P]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

当我在重定向 link 上添加 https 时,它开始给我 500 错误,而当我重定向到 http 时,它不会加载我的页面因为非安全站点 http://site2.site1.com 将在安全站点 https://www.site2.com 上加载,因此不会显示任何内容。

这里我需要帮助来解决这个问题。我查看了不同的问题,但没有发现任何与我相关的问题,因为我需要让我的 .htaccess 使用重定向和 SSL。而且,我还需要重定向到www一个,如果不加在URL.

任何帮助将不胜感激。

就像,我在这里遇到的所有问题都是我自己解决的。我的问题的解决方案如下 htaccess

RewriteEngine On
DirectoryIndex index.php

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTP_HOST} ^site2.com
RewriteRule ^(.*) site2/
RewriteCond %{HTTP_HOST} ^www.site2.com
RewriteRule ^(.*) site2/

RewriteCond %{HTTP_HOST} ^site3.com
RewriteRule ^(.*) site3/
RewriteCond %{HTTP_HOST} ^www.site3.com
RewriteRule ^(.*) site3/

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

通过这种方式,我没有将 URL 指向具有 httpssubdomain,而是将其引用到目录,因为路径与此相同,现在当我输入URLhttps 页面打开并且没有给出任何错误。