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

时间:2016-02-06 17:20:08

标签: apache .htaccess redirect ssl subdomain

我有3个域名和一个托管。我试图通过htaccess为我的所有三个域使用相同的托管。所以,我在我的域名上创建了一个带有该名称的子域名,该名称与托管相关联,如下所示。

www.site1.com [与托管相关联的主域名]

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添加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/$1 [P]
RewriteCond %{HTTP_HOST} ^www.site2.com
RewriteRule ^(.*) https://site2.site1.com/$1 [P]

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

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

当我在重定向链接上添加https时,它开始给我500错误,而当我重定向到http时,它将不会加载我的页面,因为非安全的网站{ {1}}将被加载到安全http://site2.site1.com上,结果将不会显示任何内容。

我需要帮助才能解决此问题。我查看了不同的问题但未找到任何与我相关的问题,因为我需要让https://www.site2.com使用重定向和.htaccess。此外,我还需要重定向到SSL,如果没有添加到网址中。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

就像我在这里经历的所有时间一样,我自己也解决了我的问题。我的问题的解决方案是以下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/$1
RewriteCond %{HTTP_HOST} ^www.site2.com
RewriteRule ^(.*) site2/$1

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

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

通过这种方式,我没有将网址指向subdomain https,而是将其引用到该目录,因为路径将相同,现在当我输入URL时打开https页面并且不会出现任何错误。