Apache HTTPS на перенаправление HTTPS - PullRequest
10 голосов
/ 04 мая 2011

У нас есть клиентский сервер, на котором размещено наше веб-приложение, использующее Apache 2.2 и Tomcat 6 в RHEL. У меня есть настроенное правило перезаписи 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.com до https://test2.com.

Я пробовал Виртуальные хосты, ServerAlias, NameVirtualHost, но ничего не работает. Любые предложения, если мы сможем справиться с этим путем переписывания, помогут. Любые другие указатели, которые могут привести к решению этой проблемы, будут оценены.

Спасибо

Ответы [ 4 ]

8 голосов
/ 04 мая 2011

Попробуйте следующее:

 RewriteEngine On 

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

Если у вас есть <VirualHost> для :80 и :443, это перенаправление должно выполняться в обеих конфигурациях.

5 голосов
/ 20 октября 2016

Я решил эту проблему с помощью перенаправления, но мне пришлось настроить виртуальный хост для перенаправления 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 голосов
/ 22 ноября 2018

Я решил эту проблему с помощью МНОГОКРАТНЫХ перенаправлений, не совпадающих с ответом @A Kunin.Потому что я использую разные сертификаты для обоих сайтов, и он сообщит об ошибке сертификата, если я просто перенаправлю с httpS://test1.com на httpS://test2.com.

Мое решение: httpS://test1.com -> http://test1.com ->httpS://test2.com

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

<VirtualHost *:443>
    ServerName test1.com

    #### The Tricky ####
    Redirect "/" "http://test2.com/"

    SSLEngine on
    # SSLProxyEngine On
    SSLCertificateFile /path/site1.crt
    SSLCertificateKeyFile /path/site1.key
    SSLCertificateChainFile /path/DigiCertCA1.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/site2.crt
    SSLCertificateKeyFile /path/site2.key
    SSLCertificateChainFile /path/DigiCertCA2.crt
    SSLProtocol ALL -SSLv2 -SSLv3
    SSLHonorCipherOrder on
    SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
</VirtualHost>
0 голосов
/ 27 сентября 2016

У меня был site1 с https (сертификат) и site2 с http (без сертификата), оба на одном IP-адресе (виртуальные хосты. Затем я заметил, что site2 неправильно индексируется Google для https с использованием контента site1.

В то время как для прослушивания RewriteCond

  • для порта 80 перенаправление должно находиться в .htaccess для сайта 2,
  • для порта 443, перенаправление должно находиться в.htaccess для site1.

Но тогда дискриминация переходит не по порту, а по HTTP_HOST (имя DNS).

Для меня site1 = shop.smartgart.com, site2 =one0.com. Я поместил это в siteh .htaccess:

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

То есть: если обрабатываемый HTTP_HOST не является site1, то перенаправьте на site1, используя предоставленный суффикс ($ 1).

У меня работает!

...