首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Apache HTTPS到HTTPS重定向

Apache HTTPS到HTTPS重定向
EN

Stack Overflow用户
提问于 2011-05-04 20:18:55
回答 4查看 27.1K关注 0票数 12

我们有一个客户端服务器,使用RHEL中的Apache2.2和Tomcat6托管我们的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://test2.com上实现https://test1.com

我尝试过虚拟主机、ServerAlias、NameVirtualHost,但都不起作用。如果我们可以通过重写来处理这个问题,任何建议都会有所帮助。任何其他可能导致解决此问题的建议都将不胜感激。

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-04 21:39:15

尝试以下操作:

代码语言:javascript
运行
复制
 RewriteEngine On 

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

如果您同时拥有用于:80:443<VirualHost>,则此重定向应该适用于这两种配置。

票数 10
EN

Stack Overflow用户

发布于 2016-10-21 02:05:57

我用重定向解决了这个问题,但我必须使用所有必要的ssl设置为https重定向设置虚拟主机。

代码语言:javascript
运行
复制
<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>
票数 8
EN

Stack Overflow用户

发布于 2016-09-27 23:18:08

我有带https (证书)的site1和带http (没有证书)的site2,两者都在相同的IP (虚拟主机)上。然后我注意到Google使用site1的内容对site2进行了错误的索引。

而对于RewriteCond侦听

对于端口80的

  • ,重定向需要位于.htaccess中,对于端口443,重定向需要位于site2的

  • 中,对于site1,重定向需要位于.htaccess中。

但是,区别不再是端口,而是HTTP_HOST ( DNS名称)。

对我来说,site1 = shop.smartgart.com,site2 = one0.com。我把这个放到站点1的.htaccess中:

代码语言:javascript
运行
复制
RewriteEngine On
RewriteCond %{HTTP_HOST} !^shop.smartgart.com$
RewriteRule ^(.*)$ https://shop.smartgart.com/$1 [R=301,L]

也就是说:如果正在处理的HTTP_HOST不是site1,那么使用提供的后缀($1)重定向到site1。

对我很管用!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5883226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档