Пренасочване на http и https заявки към нов хост

В Apache 2.4.6 бих искал да пренасоча заявки от http://A.org/foo и https://A.org/foo към https://B.org/foo.

Използвам следните директиви:

<VirtualHost 1.2.3.4:80>
     ServerName B.org
     ServerAlias A.org
     RewriteEngine on
     RewriteCond %{HTTP_HOST} !^B.org$
     RewriteRule ^/(.*)$ https://B.org/$1 [R=permanent,L]
</VirtualHost>

<VirtualHost 1.2.3.4:443>
     ServerName B.org
     ServerAlias A.org
     RewriteEngine on
     RewriteCond %{SERVER_PORT} ^443(s)
     RewriteCond %{HTTP_HOST} !^B.org$
     RewriteRule ^/(.*)$ https://B.org/$1 [R=permanent,L]
</VirtualHost>

Когато посетя http://A.org/foo, това пренасочва към https://B.org/foo (правилно).

Когато посетя https://A.org/foo, това зарежда https://B.org/foo, но не пренаписва URL адреса. Така че получавам грешка за несъответствие на домейн на SSL сертификат от уеб браузъра.

Има ли нещо нередно с втората директива VirtualHost, която би попречила на URL адреса да бъде пренаписан?


person Alex Reynolds    schedule 23.01.2017    source източник
comment
Коментирайте RewriteCond %{SERVER_PORT} ^443(s) ред и тествайте отново, след като изчистите кеша на браузъра.   -  person anubhava    schedule 24.01.2017
comment
Получавам същото поведение.   -  person Alex Reynolds    schedule 24.01.2017


Отговори (1)


SSL сертификатът трябва да бъде валидиран, преди да може да бъде издадено пренасочването, така че ще трябва да използвате сертификат, който е валиден за „A.org“ в рамките на VirtualHost, който издава пренасочването от https://A.org/, и да го отделите от VirtualHost, обслужващ https://B.org/ .

Портът на сървъра за проверка на линията не е необходим, тъй като VirtualHost така или иначе обслужва само този порт. Просто го махнете.

Ето схема с правила, също леко променени за естетика, която можете или не можете да предпочитате!

<VirtualHost 1.2.3.4:80>
     ServerName B.org
     ServerAlias A.org
     RewriteEngine on
     RewriteCond %{HTTP_HOST} !=B.org
     RewriteRule ^(.*)$ https://B.org$1 [R=permanent,L]
</VirtualHost>

<VirtualHost 1.2.3.4:443>
     ServerName A.org
     RewriteEngine on
     RewriteRule ^(.*)$ https://B.org$1 [R=permanent,L]
</VirtualHost>

<VirtualHost 1.2.3.4:443>
     ServerName B.org
</VirtualHost>
person Community    schedule 24.01.2017