Redirecionar o domínio raiz para o subdomínio

1

Estou tentando redirecionar:

pt.example.com and example.com

para

https://pt.example.com
  • pt.example.com será redirecionado para https://pt.example.com . Tudo bem.
  • example.com redirecionará para https://example.com (não https://pt.example.com conforme esperado)
 server {
            listen 80 default_server;
            listen [::]:80 default_server;
            server_name pt.example.com;
            return 301 https://pt.example.com$request_uri;
    }

Como posso corrigir isso?

    
por Fel 17.10.2018 / 14:56

3 respostas

1

Como você já tem um servidor padrão para o seu domínio, assumirei que esse é o único domínio hospedado nesse endereço IP.

Faça com que um server bloqueie um servidor padrão e atribua ao outro server o bloqueio do verdadeiro server_name . O servidor padrão atende nas duas portas 80 e 443 e não precisa de uma instrução server_name .

Se os dois domínios compartilharem o mesmo certificado, você poderá mover as diretivas ssl_certificate acima de ambos os blocos server , conforme mostrado no meu exemplo.

ssl_certificate ...;
ssl_certificate_key ...;

server {
    listen  80 default_server;
    listen [::]:80 default_server;
    listen  443 ssl default_server;
    listen [::]:443 ssl default_server;

    return  301 https://pt.example.com$request_uri;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name pt.example.com;

    #
    # this is your main server block for https://pt.example.com
    #
}

Consulte este documento para saber mais.

    
por 17.10.2018 / 16:22
1

Para que o HSTS funcione corretamente, você precisa redirecionar de http para https no mesmo nome de host e, em seguida, redirecionar em https do primeiro nome de host para o segundo nome de host.

Isso também significa que ambos os nomes de host devem ter um certificado TLS. O ideal é que eles sejam nomes alternativos no mesmo certificado, para simplificar a manutenção.

Aqui está um exemplo de trabalho ao vivo retirado de um dos meus sites de produção:

server {
        server_name www.yes-www.org yes-www.org;

        include includes/listen-80;
        include includes/cloudflare;
        include includes/letsencrypt;

        access_log off;

        return 301 https://$host$request_uri;
}

Acima, simplesmente redirecionamos de http para https no mesmo nome de host, o que quer que seja.

server {
        server_name yes-www.org;

        ssl_certificate /etc/letsencrypt/live/www.yes-www.org/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/www.yes-www.org/privkey.pem;

        include includes/listen-443;
        include includes/cloudflare;
        include includes/ssl;
        include includes/ssl_stapling;
        include includes/hsts;
        include includes/letsencrypt;

        return 301 https://www.yes-www.org$request_uri;
}

Aqui, redirecionamos de um nome de host para outro em https. O nome do host de destino está na diretiva return .

Se você tiver nomes de host adicionais para redirecionar de um nome de host para o nome do host de destino, todos eles poderão ser veiculados no mesmo bloco server , desde que todos compartilhem o mesmo certificado TLS. Caso contrário, duplique o bloco server .

server {
        server_name www.yes-www.org;

        root /srv/www/yes-www.org;

        access_log /var/log/nginx/yes-www.org-access.log nginx;
        access_log /var/log/nginx/cache.log cache;
        error_log /var/log/nginx/yes-www.org-error.log;

        ssl_certificate /etc/letsencrypt/live/www.yes-www.org/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/www.yes-www.org/privkey.pem;

        include includes/listen-443;
        include includes/cloudflare;
        include includes/letsencrypt;
        include includes/ssl;
        include includes/ssl_stapling;
        include includes/hsts;

        # more directives to serve the web app itself
        # which you should replace with your own directives
        # to serve your own web app
}

E, claro, isso serve apenas para o site.

    
por 17.10.2018 / 16:20
-2

Se você tiver mod_alias ativados, sugiro um simples com o arquivo .htaccess

RedirectMatch 301 ^(.*)$ / http://new.domain.com/$1
    
por 17.10.2018 / 15:17

Tags