.htaccess перенаправление домена без SSL в другой домен SSL - PullRequest
0 голосов
/ 18 октября 2018

У меня есть следующий .htaccess:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.old_domain.de$
RewriteRule (.*) https://new_domain.de/$1 [R=301,L]

Проблема в том, что правило, кажется, правильно перенаправляет только www.old_domain.de или http://www.old_domain.de, но не перенаправляет https://old_domain.de или old_domain.de (который переходит на https: // автоматически).Во втором случае я получаю следующую ошибку:

SSL_ERROR_UNRECOGNIZED_NAME_ALERT

Я уже пытался переписать домены https: // и не www в http://www., но не смогдостичь желаемых результатов как-то.Возможно, я что-то упустил Важное здесь.

Возможно, что-то не так с принудительным использованием https: // при .htaccess моего нового домена?

1 Ответ

0 голосов
/ 18 октября 2018

Для перенаправления http://www.old_domain.de или www.old_domain.de или http://old_domain.de или old_domain.de используйте следующий код

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?old_domain\.de$ [NC]
RewriteRule (.*) https://new_domain.de/$1 [R=301,L]

В вашем коде отсутствует (www\.)? вRewriteCond, который сделает перезапись работающей, независимо от того, содержит она www или нет.

Вы можете протестировать то же самое, используя htaccess tester на ссылка

Аналогично, вы должны иметьотдельный виртуальный хост, настроенный для SSL (HTTPS) .На этом виртуальном хосте вам также необходимо скопировать приведенный выше код.

SSL настроен на порт 443 для прослушивания, поэтому найдите что-то похожее на код ниже в вашем htaccess

<VirtualHost *:443>

    ServerName www.old_domain.de
    ServerAlias old_domain.de

    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/example/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/example/apache.key 

 </VirtualHost>

Если выВы все еще не можете найти файл, в котором сконфигурировано прослушивание виртуального хоста на 443, вы можете запустить apache с флагом -S , как показано ниже:

httpd -S or apachectl -S

Это даст вам имяфайл, в котором виртуальный хост, прослушивающий 443, настроен, как показано ниже:

*:80     default server xxx.xxx.xxx.xxx (/etc/httpd/conf.d/eco.conf:1)
         port 80 namevhost xxx.xxx.xxx.xxx (/etc/httpd/conf.d/eco.conf:1)

*:443    default server xxx.xxx.xxx.xxx (/etc/httpd/conf.d/ssl.conf:1)
         port 443 namevhost xxx.xxx.xxx.xxx (/etc/httpd/conf.d/ssl.conf:1)

Например, /etc/httpd/conf.d/ssl.conf - это файл, в котором настроен виртуальный хост, прослушивающий 443.

...