Перенаправление домена HTTPS на новый домен HTTPS - PullRequest
0 голосов
/ 08 мая 2019

Что нужно знать:

Я использую Vultr.com (аналог DigitalOcean) в качестве VPS и запускаю 1 сервер с Nginx и Ubuntu 18.10 x64.

У меня есть 2 домена, с которыми я работаю:

  • https://(www).oldsite.org
  • https://(www).newsite.org
  • (www) = с префиксом www и без него
  • Оба домена имеют сертификаты SSL

Моя проблема:

В настоящее время https://(www)oldsite.org отражает мои https://newsite.org

Если я удаляю https:// и перехожу только на (www)oldsite.org, он перенаправляется на https://newsite.org без проблем.

Только когда я добавляю https://, происходит зеркалирование.

Мой вопрос:

Как исправить скрипт, доступный на моих сайтах, для перенаправления oldsite на newsite?

Мне нужно следующее, чтобы перенаправить так:

Мой сценарий:

server {
root /var/www/newsite/public;
 server_name newsite.org www.newsite.org oldsite.org www.oldsite.org;

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/newsite.org-0001/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/newsite.org-0001/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

server {

    if ($host = www.newsite.org) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = newsite.org) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = oldsite.org) {
        rewrite ^ https://newsite.org$request_uri? permanent;
    } # managed by Certbot


    if ($host = www.oldsite.org) {
        rewrite ^ https://newsite.org$request_uri? permanent;
    } # managed by Certbot


    listen 80;
    listen [::]:80;
    server_name newsite.org www.newsite.org oldsite.org www.oldsite.org;
    return 404; # managed by Certbot
}

Вместо этого:

    if ($host = oldsite.org) {
        rewrite ^ https://newsite.org$request_uri? permanent;
    } # managed by Certbot


    if ($host = www.oldsite.org) {
        rewrite ^ https://newsite.org$request_uri? permanent;
    } # managed by Certbot

Есть ли Wildcard метод, который я могу использовать, подобный этому:

//NOTE THE * before oldsite.org

    if ($host = *oldsite.org) {
        rewrite ^ https://newsite.org$request_uri? permanent;
    } # managed by Certbot

Было бы идеально, если бы у меня был какой-нибудь префикс, который кто-то мог бы ввести перенаправить на https://newsite.org

Хотелось бы охватить все базы и иметь каждый вариант этих oldsite перенаправления URL.

Спасибо!

1 Ответ

1 голос
/ 08 мая 2019

Прежде всего, я рекомендую использовать отдельные конфиги для разных сайтов. Управлять проще.

Я думаю, такой вариант скрипта мог бы решить вашу проблему:

server {
     listen 80;
     listen [::]:80;
     server_name oldsite.org www.oldsite.org;
     return 301 https://newsite.org$request_uri;
}

server {
     listen 443 ssl;
     listen [::]:443 ssl;
     server_name oldsite.org www.oldsite.org;
     return 301 https://newsite.org$request_uri;

     ssl_certificate /etc/letsencrypt/live/newsite.org-0001/fullchain.pem; # managed by Certbot
     ssl_certificate_key /etc/letsencrypt/live/newsite.org-0001/privkey.pem; # managed by Certbot
     include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
     ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...