2011-05-04 194 views
7

我們有一個客戶端服務器託管我們的Web應用程序,使用Apache 2.2 & RHEL中的Tomcat 6。我已經設置了Apache重新寫入規則,以http重定向到https,它工作正常。我們有兩個用於訪問同一應用程序的DNS名稱。 Test1.com和Test2.com。我希望所有嘗試訪問http:// test1.com或https:// test1.com的用戶訪問https:// test2.com。如前所述,http:// test1.com到https:// test2.com重定向工作正常。我無法執行https://test1.comhttps://test2.comApache HTTPS到HTTPS重定向

我已經嘗試過虛擬主機,ServerAlias,NameVirtualHost,但沒有任何工作。如果我們可以通過重寫來處理這個問題,任何建議都會有幫助。任何其他可能導致解決這個問題的指針將不勝感激。

感謝

+0

您目前如何對'http:// test1.com'重定向到'https:// test2.com'? – clmarquart 2011-05-04 12:39:27

+0

我使用重寫規則如下: RewriteEngine敘述在 的RewriteCond%{HTTPS}關閉 重寫規則^ $ HTTPS(*):// test2.com $ 1 [R = 301] – 2011-05-04 13:24:58

回答

4

嘗試以下操作:

RewriteEngine On 

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

如果你有兩個:80:443一個<VirualHost>,此重定向應該在這兩種配置。

+0

Thx的建議,但它沒沒有工作。我們對第二域有ssl證書,但對第一域沒有。因此,當我使用https訪問第一域時,它會引發安全警告。我希望重定向到第二域,而不管http或https。 – 2011-05-04 14:02:11

+1

@Noman Amir:這是AFAIK不可能的,因爲重定向是在HTTP層完成的,而SSL在下面的層上工作。因此,在可以執行重定向之前,SSL層必須建立連接 - 這會導致安全警告。 – Robert 2011-05-04 15:06:53

+0

@Robert:儘管這是令人失望的,真的非常感謝這些信息!安全警告後我是否可以重定向? – 2011-05-04 15:22:25

0

我SITE1以https(證書),並用HTTP(無證書)站點2,都在同一個IP(虛擬主機。 後來我noteiced該站點2是由谷歌得到正確索引對於HTTPS,使用site1的內容。

雖然對於聽的RewriteCond

  • 端口80,重定向需要 靜坐在.htaccess爲SITE2,
  • 端口443,重定向需要 靜坐在.htaccess的site1的。

但是,然後歧視不再通過端口,而是通過HTTP_HOST(DNS名稱)。

對我來說,site1 = shop.smartgart.com,site2 = one0.com。 我把這個到站點1的.htaccess:

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^shop.smartgart.com$ 
RewriteRule ^(.*)$ https://shop.smartgart.com/$1 [R=301,L] 

那就是:如果正在處理的HTTP_HOST不SITE1,然後重定向到site1的,使用附帶的後綴($ 1)。

適合我!

2

我使用重定向解決了這個問題,但我必須爲https重定向設置虛擬主機,並使用所有必需的ssl設置。

<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> 
+0

請將此答案標記爲true。它絕對有效。 – weiglt 2017-09-02 06:35:35