Apache HTTPS到HTTPS重定向

Nom*_*mir 11 mod-rewrite https apache2

我们有一个客户端服务器使用RHEL中的Apache 2.2和Tomcat 6托管我们的Web应用程序.我已经为http到https重定向设置了apache重写规则,它工作正常.我们有两个用于访问同一应用程序的DNS名称.Test1.com和Test2.com.我希望所有用户尝试访问http:// test1.com或https:// test1.com到https:// test2.com.如上所述,http:// test1.com到https:// test2.com重定向工作正常.我不能够实现https://test1.comhttps://test2.com.

我尝试过Virtual Hosts,ServerAlias,NameVirtualHost,但没有任何效果.如果我们可以通过重写处理这个建议会有所帮助.任何其他可能导致解决此问题的指针将不胜感激.

谢谢

clm*_*art 8

请尝试以下方法:

 RewriteEngine On 

 RewriteCond %{HTTP_HOST} test1.com$
 RewriteRule ^(.*)$ https://test2.com$1 [L,NC,R=301]
Run Code Online (Sandbox Code Playgroud)

如果你有<VirualHost>两个:80:443,这个重定向应该在两种配置中.

  • @Noman Amir:这是不可能的,因为重定向是在 HTTP 层上完成的,而 SSL 在下面的层上工作。因此,在执行重定向之前,SSL 层必须已建立连接 - 这会导致安全警告。 (2认同)

A K*_*nin 6

我通过重定向解决了此问题,但是我必须使用所有必需的ssl设置为https重定向设置虚拟主机。

<VirtualHost *:80>
    ServerName test1.com
    Redirect "/" "https://test2.com/"
</VirtualHost>

<VirtualHost *:443>
    ServerName test1.com
    Redirect "/" "https://test2.com/"
    SSLEngine on
    # SSLProxyEngine On
    SSLCertificateFile /path/site.crt
    SSLCertificateKeyFile /path/site.key
    SSLCertificateChainFile /path/DigiCertCA.crt
    SSLProtocol ALL -SSLv2 -SSLv3
    SSLHonorCipherOrder on
    SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
</VirtualHost>

<VirtualHost *:443>
    ServerName test2.com
    ...
    SSLEngine on
    # SSLProxyEngine On
    SSLCertificateFile /path/site.crt
    SSLCertificateKeyFile /path/site.key
    SSLCertificateChainFile /path/DigiCertCA.crt
    SSLProtocol ALL -SSLv2 -SSLv3
    SSLHonorCipherOrder on
    SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

  • 请将此答案标记为正确。它绝对有效。 (2认同)