Cómo redirigir una url en NGINX
Necesito redirigir cada http://test.com solicitar a http://www.test.com. Cómo se puede hacer esto.
En el bloque de servidor intenté 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 parece a
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;
}
}
3 answers
La mejor manera de hacer lo que quieres 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 variable de bloque de servidor principal server_name de la siguiente manera:
server_name www.test.com;
Importante: Nuevo server
bloque es la manera correcta de hacer esto, if
es malo . Debe usar ubicaciones y servidores en lugar de if
si es posible. Rewrite
es a veces mal también, por lo que lo reemplazó con return
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-18 02:21:50
Similar a otra respuesta aquí, pero cambie el http en la reescritura a a scheme scheme de la siguiente manera:
server {
listen 80;
server_name test.com;
rewrite ^ $scheme://www.test.com$request_uri? permanent;
}
Y edite su variable de bloque de servidor principal server_name de la siguiente manera:
server_name www.test.com;
Tuve que hacer esto para redirigir www.test.com to test.com.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-26 18:17:56
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 anterior se hace o si ya los 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;
}
Por lo que su bloque de servidor se verá 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;
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-24 10:20:33