子域名到文件夹重定向 (HTTPS)

子域名到文件夹重定向 (HTTPS)

我的 httpd.conf 最底部有以下内容。没有进行其他配置。

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>

因此,我的重定向有两个目标:将所有 http 重定向到 https(有效)并将 blarg.contoso.com 重定向到 contoso.com/blarg(如果尚未重定向,则重定向到 https)。

如果我输入http://blarg.contoso.com,我被重定向到https://www.contoso.com/blarg。但是,如果我输入https://blarg.contoso.com,不会发生重定向。

有什么建议吗?运行 RHEL 6.5 64 位。非常感谢!

编辑:

在你们的帮助下,我从 HTTP 虚拟主机中删除了子域名重定向,并将其移至 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>

现在,子域名重定向不再起作用。

答案1

我觉得你错过了:

RewriteEngine On

在 https 部分。

答案2

RewriteRule使用

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

因此,SSL vhost 所做的唯一重写是针对以 开头的域的请求stoplight

我认为删除该规则可以解决您的问题。

相关内容