我在我的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开头的域名的。
我怀疑删除该规则将解决您的问题。