У меня 2 веб-сайта (old-domain.com и new-domain.com), я закрываю old-domain.com и что перенаправляю на новый домен. Поэтому я добавил строки перезаписи и возврата в свои файлы conf. Команда catch all (return 301 *) работает без предупреждения, однако, когда я перехожу на определенную страницу (например, old-domain.com/page-1), я получаю предупреждение о сертификате:
Этот сервер не может доказать, что он это old-domain.com; его сертификат безопасности получен от new-domain.com. Это может быть вызвано неправильной конфигурацией или злоумышленником, перехватывающим ваше соединение.
Оба домена находятся на одном IP, ниже приведены мои настройки nginx:
new-domain.conf:
server {
listen 80;
server_name new-domain.com;
}
server {
listen 433;
server_name new-domain.com;
ssl_certificate new-domain.cert;
ssl_certificate_key new-domain.cert_key;
ssl_client_certificate new-domain.client_cert_key;
}
old-domain.conf:
server {
listen 80;
listen 433;
server_name old-domain.com;
ssl_certificate old-domain.cert;
ssl_certificate_key old-domain.cert_key;
ssl_client_certificate old-domain.client_cert_key;
#catch all - works, but causes invalid certificate
rewrite ^/page-1 https://new-domain.com/differnt-path/page-1-extra permanent;
#catch all - works without warning
return 301 https://new-domain.com;
rewrite
локальный белый redirect
, не. Действительно необходимо закончить Ваш rewrite
redirect
только для выполнения перенаправления. Вы могли также использовать соответствие местоположениям для Вашего, "переписывает"...
старый-domain.conf:
server {
listen 80;
listen 433;
server_name old-domain.com;
ssl_certificate old-domain.cert;
ssl_certificate_key old-domain.cert_key;
ssl_client_certificate old-domain.client_cert_key;
location ~ ^/page-1 {
return 301 https://new-domain.com/differnt-path/page-1-extra;
}
location ~ ^/page-2(/.*)?$ {
return 301 https://new-domain.com/differnt-path/page-2-extra$1;
}
rewrite ^/page-3 https://page-3/ redirect; # http 302!!!
#catch all - works without warning
return 301 https://new-domain.com;