Use Nginx para lograr 301 para saltar al nombre de dominio raíz de https

Basado en consideraciones de SEO y seguridad, se requiere un salto 301. Lo siguiente usa Nginx para el procesamiento general

Lograr resultados

Debe saltar todas las siguientes direcciones al nombre de dominio raíz de https https://chanvinxiao.com

La diferencia entre 301 y 302

301 es una redirección permanente y 302 es un salto temporal

  • 301: el motor de búsqueda transferirá el peso y el valor de PR
  • 302: Sin procesamiento adicional por motores de búsqueda

Ahora espero que el motor de búsqueda piense que la dirección original ya no existe y se transfiera por completo a la nueva dirección, así que use 301

http saltar a https

La forma más fácil es devolver directamente una dirección redirigida en sever, más un código de estado 301 en el medio (de lo contrario, el valor predeterminado es 302)

server {
  listen 80;
  return 301 https://$host$request_uri;
}
  • Tanto return como rewrite pertenecen a las instrucciones del módulo de reescritura de Nginx, porque no hay necesidad de modificar la ruta aquí, por lo que es más conveniente usar return
  • Tanto $ host como $ request_uri son variables incrustadas del módulo http de Nginx. La combinación de las dos variables es equivalente al resultado de eliminar http: //

www Saltar al nombre del dominio raíz

Esto solo necesita ser procesado en https, porque todos los saltos http a https

server {
  listen 443 ssl;
  server_name ~^(?<www>www\.)?(.+)$;
  if ( $www ) {
    return 301 https://$2$request_uri;
  }
...
  • Aquí , se utiliza la función de coincidencia regular de nombre_servidor . Se puede habilitar agregando ~ antes de su valor, y admite la sintaxis PCRE
  • El uso de la regularización es para confirmar si existe el prefijo www. Y el nombre del dominio raíz de captura, y generar dos variables, una es la variable de captura nombrada $ www y la otra es la variable de captura numérica $ 2
  • si la orden que no soporta el uso de captura de variables, de lo contrario será error ( unknown "1" variable), por lo que el aumento del ?<www>valor de $ 1 se asigna a los $ www

Reduce la cantidad de saltos

La configuración anterior ha satisfecho los resultados de la implementación, pero hay una falla, es decir, http://www.chanvinxiao.com saltará primero a https://www.chanvinxiao.com y luego saltará a https://chanvinxiao.com , Definitivamente no es tan bueno realizar un segundo salto como un solo salto, por lo que es mejor hacerlo directamente en un solo paso, modifique la configuración http de la siguiente manera:

server {
  listen 80;
  server_name ~^(?:www\.)?(.+)$;
  return 301 https://$1$request_uri;
}
  • En el servidor correspondiente a http, cambie el nombre_servidor al modo normal y reemplace $ host con el nombre de dominio raíz capturado $ 1
  • www se descartará directamente aquí, por lo que no es necesario capturar, use?: Marque para lograr solo la agrupación sin capturar, por lo que el nombre de dominio raíz detrás se convierte en $ 1
  • El resultado de esto es que, independientemente de si tiene o no www, será redirigido al nombre de dominio raíz https sin www.

Resumen

No es necesario especificar un nombre de dominio específico en la configuración anterior, lo cual es conveniente para la compatibilidad y portabilidad. Se utilizan las siguientes características de Nginx:

  • coincidencia regular para nombre_servidor
  • La instrucción de devolución recibe el código de estado y la dirección.
  • Variables incrustadas $ host y $ request_uri

Supongo que te gusta

Origin www.cnblogs.com/chanvin/p/301-to-root-with-https-by-nginx.html
Recomendado
Clasificación