https子域没有使用htaccess正确重定向

时间:2016-04-21 03:50:46

标签: linux apache .htaccess

我有一个域名:example.com和一个名为sub.example.com

的子域名

我想将example.com的所有主域请求强制为https://除了1个文件夹。例如:

http://www.example.com/ <-- Redirect all requests to https://
http://www.example.com/folder/ <-- Force to http:// not https://

我还想强制sub.example.com的所有子域请求为https://,但1个文件夹除外。例如:

http://sub.example.com <-- Redirect all requests to https://
http://www.example.com/folder/ <-- Force to http:// not https://

目前example.com工作正常并强制为https://为主域名,文件夹未重定向到https://但文件夹未强制执行http://如果有人选择https:// < / p>

如果我访问http://sub.example.com,则不会强制执行https://如果我手动访问https://sub.example.com,则会在网址中显示。但是,它显示的网站实际上来自https://www.example.com

我对example.com的htaccess文件是:

<IfModule mod_rewrite.c>

    RewriteEngine On
    RewriteCond %{SERVER_PORT} 80 
    RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]        
    RewriteCond %{HTTP_HOST} !^sub.example.com$ [NC]
    RewriteCond %{REQUEST_URI} !^/folder/
    RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,QSA,L]

 </IfModule>

我对sub.example.com的htaccess文件是:

RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} !^/folder/
RewriteCond %{HTTP_HOST} ^example\.com\.au$ [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

1 个答案:

答案 0 :(得分:0)

我发现了这个问题。它与htaccess文件无关。我发现我的证书已安装到主域,而子域没有匹配的证书。

Apache正在重定向到ssl证书域而不是子域。我通过购买外卡ssl,将其安装到主域,然后将其单独安装到子域中解决了这个问题。

这解决了问题。