
Cambié mi archivo de configuración para que cuando un usuario escriba el dominio sin www, redirija al dominio con www:
nombre_servidor ejemplo.com; devolver 301 $esquema://www.example.com$request_uri; También deseo mi https para cualquier cosa en /usuario
Recibo el error de redireccionamientos demasiado grandes, ¿en qué me estoy equivocando?
Así que tengo:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/example.com/site;
index index.html index.htm;
# Make site accessible from http://localhost/
server_name example.com;
return 301 $scheme://www.example.com$request_uri;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
location /user {
rewrite ^ https://$http_host$request_uri? permanent;
}
}
Para el puerto 443:
server {
listen 443;
server_name example.com;
return 301 $scheme://www.example.com$request_uri;
root /var/www/example.com/site;
index index.html index.htm;
ssl on;
ssl_certificate //path here
ssl_certificate_key //path here
location / {
rewrite ^ http://$http_host$request_uri? permanent;
}
location /user {
}
}
Respuesta1
La mejor manera de hacerlo es tener server
bloques separados para example.com
y www.example.com
. La entrada para example.com
deberíasolotener:
server {
listen 80;
server_name example.com;
return 301 http://www.example.com$request_uri;
}
La entrada para www.example.com
tendrá todo lo demás (y obviamentenotener la redirección).
De manera similar, tendrá dos entradas de servidor separadas para https (puerto 443).
Respuesta2
Haría algo como esto: (no probado)
server {
listen 80;
server_name example.com;
return 301 http://www.example.com$request_uri;
}
server {
listen 80;
server_name www.example.com;
root /var/www/example.com/site;
index index.html index.htm;
location / {
rewrite ^/index.php;
}
}
server {
listen 443;
server_name www.example.com;
root /var/www/example.com/site;
index index.html index.htm;
ssl on;
ssl_certificate //path here
ssl_certificate_key //path here
location /user {
rewrite ^ https://$http_host$request_uri? permanent;
}
}