significa reverso que permanently moved injector error como code cache nginx http-status-code-301

reverso - Nginx elimina WWW y responde a ambos



reverse nginx (6)

Tengo el siguiente fragmento de configuración nginx:

server { listen 80; server_name mydomain.io; root /srv/www/domains/mydomain.io; index index.html index.php; access_log /var/log/nginx/domains/mydomain.io/access.log; error_log /var/log/nginx/domains/mydomain.io/error.log; location ~/.php { try_files $uri =404; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_intercept_errors on; fastcgi_pass 127.0.0.1:9000; include /etc/nginx/fastcgi_params; } }

En primer lugar, ¿cómo puedo hacer que el bloque servidor responda both http://www.mydomain.io como a http://mydomain.io ? En segundo lugar, quiero forzar si provienen de http://www.mydomain.io para redireccionar a http://mydomain.io .

Gracias.


Creo que es mejor agregar dos bloques de servidor separados para evitar una verificación innecesaria por parte del bloque if . También uso la variable $ scheme para que las solicitudes HTTPS no se redirijan a sus contrapartes inseguras.

server { listen 80; server_name www.mydomain.io; rewrite ^ $scheme://mydomain.io$uri permanent; } server { listen 80; server_name mydomain.io; # your normal server block definitions here }


En la primera pregunta, simplemente agregue ambos dominios:

server_name mydomain.io www.mydomain.io;

Para el segundo, necesitarás este simple redireccionamiento:

server { listen 80; server_name www.mydomain.io mydomain.io; if ($host = ''www.mydomain.io'' ) { rewrite ^/(.*)$ http://mydomain.io/$1 permanent; }


Otra forma de codificarlo:

if ($http_host ~* "^www/.(.+)$"){ rewrite ^(.*)$ http://%1$request_uri redirect; }

Funciona incluso con múltiples nombres de dominio en el mismo código.




server { listen 80; server_name www.mydomain.io; return 301 https://$host$request_uri; } server { listen 80; server_name mydomain.io; ... }