
Estoy intentando crear una redirección para agregar una barra diagonal,
location / {
if($request_uri ~ ^([^.]*[^/])$){
return 301 https://$host$request_uri/;
}
}
No tengo idea de cómo hacer coincidencias si, cuando simplemente creo una redirección con /, funciona, solo que esta expresión regular parece rota.
ACTUALIZAR
Reescribir lo intenté
location / {
rewrite ^([^.]*[^/])$ $1/ permanent;
.....
}
y
if ($http_x_forwarded_proto != "https") {
return 301 https://$host$request_uri;
}
funciona bien, redirige a https, también quería crear expresiones regulares con él
Respuesta1
Se resolvió hace mucho tiempo, pero veo que muchas personas revisan esta pregunta, así que si no recuerdo mal, no tenía esta línea de código y me estaba redirigiendo:
port_in_redirect off;
Lo sé, no mencioné los puertos en cuestión, no hay forma de responderlo, pero lo dejaré aquí si alguien tuvo el mismo problema.
Respuesta2
Si entiendo la pregunta correctamente, desea publicarla automáticamente, sin utilizar una redirección 301.http://ejemplo.com/foo/index.htmlcuando la solicitud es parahttp://ejemplo.com/foosin barra diagonal?
Si es así, encontré que esta configuración de try_files funciona:
try_files $uri $uri/index.html $uri/ =404;
- El primero
$uri
coincide exactamente con el uri. - El segundo
$uri/index.html
coincide con un directorio que contiene index.html donde el último elemento de la ruta coincide con el nombre del directorio, sin barra diagonal - El tercero
$uri/
coincide con el directorio. - El cuarto
=404
devuelve la página de error 404 si ninguno de los patrones anteriores coincide.
Respuesta3
Esto parece funcionar como se esperaba:
location / {
if ($request_uri ~ ^([^.]*[^/])$) {
return 301 https://$host$request_uri/;
}
try_files $uri $uri/ /index.html;
....
}
No estoy seguro de ver la diferencia con el que ha probado, excepto el error de sintaxis que debería haber encontrado debido a que faltan espacios en la if
declaración (podría ser un error tipográfico). ...o tal vez porque tiene otras directivas que no nos muestra que anulan esta.