![Cómo eliminar la barra diagonal antes de los parámetros de URL en Nginx](https://rvso.com/image/1684242/C%C3%B3mo%20eliminar%20la%20barra%20diagonal%20antes%20de%20los%20par%C3%A1metros%20de%20URL%20en%20Nginx.png)
Tengo un sitio Nginx simple que ejecuta un único archivo PHP independientemente de la URL (excepto los archivos CSS/JS, que se sirven normalmente)
Sin embargo, no importa lo que haga y las pruebas con varios navegadores, cada vez que incluyo parámetros GET/URL, se agrega una barra diagonal justo antes del archivo ?
. Por ejemplo:
example.com?test=1
redirecciona a =>example.com/?test=1
example.com/path?test=1
redirecciona a =>example.com/path/?test=1
Esta es la configuración que estoy usando actualmente
index index.html index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_index index.php;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
¿Alguien sabe cómo evitar que esto suceda?
Respuesta1
Creo que estás siendo atrapado por una de las reglas de nginx discutidas. aquíque dice...
Si una ubicación está definida por una cadena de prefijo que termina con el carácter de barra diagonal y las solicitudes se procesan mediante proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass, memcached_pass o grpc_pass, entonces se realiza el procesamiento especial. En respuesta a una solicitud con un URI igual a esta cadena, pero sin la barra diagonal, se devolverá una redirección permanente con el código 301 al URI solicitado con la barra diagonal adjunta. Si no se desea esto, se podría definir una coincidencia exacta del URI y la ubicación de esta manera:
y hay más discusión. Creo que su URI de ejemplo en realidad es procesado por la primera especificación de ubicación (que obviamente termina con una barra), por lo que se agrega una barra al URI de solicitud.
una especificación de ubicación como location ~ .*$ { commands; }
podría funcionar mejor