es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo redirigir en nginx, si los usuarios ingresan al sitio web con una barra diagonal al final en la ruta?

Aquí tenemos un sitio web de Gatsby donde enfrentamos problemas de redirección. Por ejemplo, si ingreso https://example.com/test/`, se redirige ahttps://example.com/test`.\

Pero en https://www.redirect-checker.org/ muestra `https://example.com/test/` con un código de estado HTTP 200 en lugar de 301. Esto afecta el SEO de las páginas duplicadas.

La expectativa es que al ingresar `https://example.com/test/`:

Primero, se redirija a `https://example.com/test/` con un código de estado HTTP 301.

Luego se redirija a `https://example.com/test` con un código de estado HTTP 200.

Aquí he cambiado mi archivo nginx.conf de la siguiente manera (try_files $uri $uri/ =404;).

server {
  listen 80;
  location / {
    root /usr/share/nginx/html;
    index index.html index.htm;
    try_files $uri $uri/ =404;
    error_page 404 /404.html;
  }
  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
    root /usr/share/nginx/html;
  }
}

Sin embargo, sigo obteniendo la ruta `https://example.com/test/` con un código de estado 200 en lugar de 301. ¿Alguien podría ayudarme a resolver este problema, por favor?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para resolver el problema de redirección y obtener el resultado esperado, puedes intentar agregar el siguiente código a tu archivo nginx.conf:

    server {
      listen 80;
      server_name example.com;
    
      location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
        if ($request_uri ~ ^/(.*)/$) {
          return 301 /$1;
        }
        try_files $uri $uri/ =404;
        error_page 404 /404.html;
      }
      error_page 500 502 503 504 /50x.html;
      location = /50x.html {
        root /usr/share/nginx/html;
      }
    }
    

    Aquí hemos agregado una declaración if para verificar si $request_uri termina con una barra diagonal final. Si es así, se redirige a la misma URL sin la barra diagonal final con un código de estado 301.

    Esto debería ayudar a resolver el problema de redirección y garantizar que los motores de búsqueda vean el código de estado HTTP correcto para `https://example.com/test/`.

Comments are closed.