Como redirixir NON WWW e WWW con Nginx

Cando tes un sitio web ou unha aplicación Nginx en funcionamento, é desexable que os visitantes accedan ao dominio usando versións www e non www do teu nome de dominio. Non obstante, na era actual da optimización de motores de busca e os usuarios que desexan unha experiencia de navegación rápida e sinxela, ter dúas ligazóns URL pode afectar negativamente á experiencia global do seu sitio web. Non obstante, isto non significa que debas abandonar un dos xeitos dos teus visitantes para acceder ao sitio. Pola contra, unha simple redirección pode mellorar a experiencia do visitante do teu sitio web, aumentar o recoñecemento de backlink máis rapidamente e mellorar a túa valoración de SEO.

Na seguinte guía, aprenderá a usar como redirixir un URL www a non www, por exemplo (www.example.com) a (exemplo.com) e viceversa cunha redirección chámase a Redirección permanente, ou "301 redireccións", Isto pódese facer en calquera sistema operativo que use Nginx, os exemplos son só para os bloques do servidor. Non explican como configuralos nin instalar Nginx.

Requisitos previos

  • SO recomendado: Calquera sistema Linux que poida executar Nginx
  • Conta de usuario: Unha conta de usuario con acceso sudo ou root.
  • Paquetes recomendados: enrolar

Instalar as distribucións do método curl DNF:

sudo dnf install curl

Instalar as distribucións do método curl APT:

sudo apt install curl

Instalar curl Pacman Method Distros:


sudo pacman -S curl

Instalar curl Zypper Method Distros:

sudo zypper install curl

Opción 1: Redirixir NON-WWW a WWW

No primeiro exemplo, engadirás o seguinte código enriba do teu existente (www) bloque de nomes de servidor para redirixir a todos os visitantes que acceden ao teu URL que non é www só a un URL www.

HTTP (80):

server {
    server_name    .example.com;
    listen                 80;
    listen                 [::]:80;
    return 301         https://www.example.com$request_uri;
}

HTTPS (443)

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

    # SSL
    ssl_certificate                 /path/to/cert.pem;
    ssl_certificate_key         /path/to/key.pem;
    ssl_trusted_certificate    /path/to/cert.crt;
    return                             301 https://www.example.com$request_uri;
}

Nota, asegúrate ($request_uri) non se elimina, xa que isto pode causar problemas con todas as ligazóns que non sexan www que só se redirixen á súa páxina de inicio.

Un exemplo disto é https://example.com/random-topic. Se o ($request_uri) non se engade, desviarase a www.example.com en lugar de https://www.example.com/random-topic, o que frustrará aos teus visitantes e prexudicará a clasificación do teu motor de busca, e os rastrexadores confundiranse.


Opción 2: Redirixir WWW a NON WWW

No segundo exemplo, engadirás o seguinte código enriba do teu existente (non www) bloque de nomes de servidor para redirixir a todos os visitantes que accedan ao teu URL www só a un URL que non sexa www.

HTTP (80)

server {
    server_name     www.example.com;
    listen                 80;
    listen                 [::]:80;
    return 301         https://example.com$request_uri;
}

HTTPS (443)

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

    # SSL
    ssl_certificate                /path/to/cert.pem;
    ssl_certificate_key        /path/to/key.pem;
    ssl_trusted_certificate   /path/to/cert.crt;
    return                             301 https://example.com$request_uri;
}

Como se indica ao final da Opción 1, asegúrese ($request_uri) non se elimina. Esta é unha parte esencial.

Teña en conta que coloque os certificados e a clave para as redireccións ou problemas HTTPS.

Confirmar cambios

Antes de reiniciar a túa instancia de Nginx, é mellor facer unha execución en seco para garantir que non hai erros no que acabas de engadir. Para probar, executa o seguinte comando:


sudo nginx -t

Se todo está ben, deberías obter a seguinte saída:

nginx: the configuration file /etc/nginx/my-server.conf syntax is ok
nginx: configuration file /etc/nginx/my-server.conf test is successful

Continúa reiniciando o teu servizo Nginx para realizar os cambios:

sudo systemctl restart nginx

Iso é! Completaches a redirección. Para probar se a redirección funciona, executa o seguinte:

proba de redirección non www a www

curl -I https://example.com

Exemplo de saída:

HTTP/1.1 301 Moved Permanently
 Server: nginx/1.21.1 (Ubuntu)
 Date: Mon, 14 July 2021 18:20:19 GMT
 Content-Type: text/html
 Content-Length: 193
 Connection: keep-alive
 Location: http://www.example.com/

Proba de redirección de www a non www

curl -I https://www.example.com

Exemplo de saída:

HTTP/1.1 301 Moved Permanently
 Server: nginx/1.21.1 (Ubuntu)
 Date: Mon, 14 July 2021 18:21:33 GMT
 Content-Type: text/html
 Content-Length: 193
 Connection: keep-alive
 Location: http://example.com/

Comentarios e conclusión

Na guía, aprendeu a engadir facilmente e rapidamente as indicacións www e non www ao bloque do sitio do servidor de Nginx, o que mellorará a experiencia global dos seus visitantes visitando só un URL en lugar de dous.


Como se explica ao comezo da guía, o SEO é cada vez máis crucial. Os motores de busca están constantemente marcando sitios web; ter dous URL con contido duplicado potencial é unha gran marca vermella contra o teu sitio web. Engadir esta redirección pode aumentar rapidamente a túa clasificación e as túas ligazóns de retroceso.


Non é o que buscabas? Proba a buscar titoriais adicionais.

Deixe un comentario