子域到文件夹redirect(HTTPS)

我在我的httpd.conf底部有以下内容。 没有其他configuration完成。

NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin [email protected] ServerName www.contoso.com RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} RewriteCond %{HTTP_HOST} !^www.* [NC] RewriteCond %{HTTP_HOST} ^stoplight.* [NC] RewriteCond %{HTTP_HOST} ^([^\.]+)\.contoso\.com RewriteCond /var/www/html/%1 -d RewriteRule (.*) https://www.contoso.com/blarg%{REQUEST_URI} </VirtualHost> NameVirtualHost *:443 <VirtualHost *:443> DocumentRoot /var/www/html ServerName www.contoso.com RewriteCond %{HTTP_HOST} !^www.* [NC] RewriteCond %{HTTP_HOST} ^stoplight.* [NC] RewriteCond %{HTTP_HOST} ^([^\.]+)\.contoso\.com RewriteCond /var/www/html/%1 -d RewriteRule (.*) https://www.contoso.com/blarg%{REQUEST_URI} SSLEngine on SSLCertificateFile BLAH BLAH BLAH this works great SSLCertificateKeyFile BLAH BLAH BLAH this works great SSLCertificateChainFile BLAH BLAH BLAH this works great </VirtualHost> 

所以我在redirect中有两个目标:将所有httpredirect到https(正在工作),并将blarg.contoso.comredirect到contoso.com/blarg(如果不是,则为https)。

如果我inputhttp://blarg.contoso.com ,我会redirect到https://www.contoso.com/blarg 。 但是,如果我inputhttps://blarg.contoso.com ,则不会发生redirect。

有小费吗? 运行RHEL 6.5 64位。 非常感谢!

编辑:

由于你们的帮助,我从HTTP虚拟主机中删除了子域redirect,并将其移至HTTPS虚拟主机。 我只发布HTTPS,因为这是我唯一遇到的问题。

 NameVirtualHost *:443 <VirtualHost *:443> DocumentRoot /var/www/html ServerName www.summitcreators.com RewriteCond %{HTTP_HOST} !^www.* [NC] RewriteCond %{HTTP_HOST} ^stoplight.* [OR] RewriteCond %{HTTP_HOST} ^([^\.]+)\.summitcreators\.com RewriteCond /var/www/html/%1 -d RewriteRule (.*) https://www.summitcreators.com/stoplight%{REQUEST_URI} </VirtualHost> 

现在没有子域redirect工作。

我想你想念:

 RewriteEngine On 

在https部分。

你的RewriteRule使用

 RewriteCond %{HTTP_HOST} ^stoplight.* [NC] 

所以唯一重写你的SSL虚拟主机的请求是针对以stoplight开头的域名的。

我怀疑删除该规则将解决您的问题。