Apache重定向来自https

时间:2016-09-26 11:20:19

标签: linux apache

我在服务器上安装了SSL证书,https工作正常。

Http重定向工作正常,例如http://login.example.com - > https://example1.com/index.html

但是从https重定向无效,例如https://login.example.com - > https://example1.com/index.html

它只是转到我的服务器的主页https://redirect.example.com

有关如何从https重定向到工作的任何建议吗?

谢谢!

<VirtualHost *:80>
    RewriteEngine On
    ServerName redirect.example.com
    RewriteCond %{HTTP_HOST} ^login\.example\.com(.*)
    RewriteRule (.*) https://example1.com/index.html [L]
</VirtualHost>

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile    /etc/httpd/my.crt
    SSLCertificateKeyFile /etc/httpd/my.pem
    ServerName redirect.mydomain.com

    RewriteEngine On
    ServerName redirect.example.com
    RewriteCond %{HTTP_HOST} ^login\.example\.com(.*)
    RewriteRule (.*) https://example1.com/index.html [L]

</VirtualHost>

谢谢!

3 个答案:

答案 0 :(得分:1)

我发现您的SSL主机声明中有一个重复的ServerName指令。 这可能会造成麻烦。

来自Apache documentation

  

如果您使用的是基于名称的虚拟主机,则部分内的ServerName指定必须在请求的Host:标头中显示哪个主机名才能匹配此虚拟主机。

答案 1 :(得分:0)

多少规则究竟是什么意思?多个域名/子域名?

应以这种方式实现http(s):// login.example.com到https://example1.com/index.html的简单重定向:

<VirtualHost *:80>
ServerName login.example.com
RewriteEngine On
RewriteCond %{HTTP_HOST} ^login\.example\.com
RewriteRule (.*) https://example1.com/index.html [L]
</VirtualHost>

<VirtualHost *:443>
SSLEngine on
SSLCertificateFile    /etc/httpd/my.crt
SSLCertificateKeyFile /etc/httpd/my.pem
ServerName login.example.com
RewriteEngine On
RewriteCond %{HTTP_HOST} ^login\.example\.com
RewriteRule (.*) https://example1.com/index.html [L]
</VirtualHost>

重要提示:ServerName应与您的SSL证书的公用名匹配(除非它是通配符证书)。

注意:由于Apache mod_alias模块提供的Redirect指令在这里可能就足够了,因此RewriteEngine可能因你的目的而过度。 来自Apache文档:When not to use mod_rewrite

答案 2 :(得分:0)

使用重写规则的服务器别名:

ServerAlias login.example.com

您可以将多个ServerAlias用于多个Rewrite Rule