redireccionar mod_rewrite how another redirect nginx url-rewriting

redirect - mod_rewrite - Cómo redirigir una url en NGINX



redireccionar http a https nginx (3)

Necesito redireccionar cada solicitud de http://test.com a http://www.test.com . ¿Cómo puede hacerse esto?

En el bloque del servidor traté de agregar

rewrite ^/(.*) http://www.test.com/$1 permanent;

pero en el navegador dice

The page isn''t redirecting properly Firefox has detected that the server is redirecting the request for this address in a way that will never complete.

Mi bloque de servidor se ve como

server { listen 80; server_name test.com; client_max_body_size 10M; client_body_buffer_size 128k; root /home/test/test/public; passenger_enabled on; rails_env production; #rewrite ^/(.*) http://www.test.com/$1 permanent; #rewrite ^(.*)$ $scheme://www.test.com$1; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }


La mejor forma de hacer lo que desea es agregar otro bloque de servidor:

server { #implemented by default, change if you need different ip or port #listen *:80 | *:8000; server_name test.com; return 301 $scheme://www.test.com$request_uri; }

Y edite su servidor principal bloque server_name variable de la siguiente manera:

server_name www.test.com;

Importante : El nuevo bloque de server es la forma correcta de hacerlo, if es malo . Debe usar ubicaciones y servidores en lugar de if es posible. Rewrite es a veces malo también , así que lo reemplazó con return .


Primero asegúrese de haber instalado Nginx con el módulo de reescritura HTTP. Para instalar esto necesitamos tener pcre-library

Cómo instalar la biblioteca pcre

Si lo mencionado anteriormente está hecho o si ya lo tiene, simplemente agregue el siguiente código en su bloque de servidor nginx

if ($host !~* ^www/.) { rewrite ^(.*)$ http://www.$host$1 permanent; }

Para eliminar www de cada solicitud, puede usar

if ($host = ''www.your_domain.com'' ) { rewrite ^/(.*)$ http://your_domain.com/$1 permanent; }

para que su bloque de servidor se vea como

server { listen 80; server_name test.com; if ($host !~* ^www/.) { rewrite ^(.*)$ http://www.$host$1 permanent; } client_max_body_size 10M; client_body_buffer_size 128k; root /home/test/test/public; passenger_enabled on; rails_env production; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }


Similar a otra respuesta aquí, pero cambie el http en el esquema de reescritura a $ como ese:

server { listen 80; server_name test.com; rewrite ^ $scheme://www.test.com$request_uri? permanent; }

Y edite su servidor principal bloque server_name variable de la siguiente manera:

server_name www.test.com;

Tuve que hacer esto para redirigir www.test.com a test.com.