Utilice “rewrite” y “try_files” juntos [Nginx]
Eliminé el sufijo “.php” al final de los archivos PHP en el servidor Nginx con el siguiente código, pero esta vez no puedo enviar algunos datos al servidor.
try_files $uri/ $uri.html $uri.php$is_args$query_string;
Algunos enlaces en el sitio se envían con Ajax y la extensión “.php” no está disponible al final de estos enlaces. Por ejemplo, https://panel.example.com/app/controller/ajax/collect.
Por ejemplo, cuando quiero acceder al archivo “/collect” que quiero acceder a través de Ajax o directamente, obtengo el error “Archivo no encontrado”. Esto se debe a que hago un “rewrite” con el siguiente código y proporciono una URL limpia.
rewrite ^/([^/]+)/([^/]+)?$ /index.php?cmd=$1&scd=$2 last;
rewrite ^/([^/]+)/?$ /index.php?cmd=$1 last;
Enlace de muestra: https://panel.example.com/[detalles|cat|profile]/[subPáginas(productoID, username..)]
Como resultado, los códigos anteriores son correctos y funcionan, pero no funcionan al mismo tiempo juntos. ¿Cómo puedo ejecutar estos dos códigos al mismo tiempo?
Archivo de configuración de Nginx: Nginx Conf. File
davy.ai
Solución para ejecutar ambos códigos al mismo tiempo
Para eliminar el sufijo “.php” al final de los archivos PHP y al mismo tiempo permitir el acceso a enlaces sin la extensión “.php”, es necesario modificar la directiva “try_files” y agregar un nuevo bloque “location”.
Primero, modifique la directiva “try_files” para incluir la extensión “.php” en la lista de archivos a verificar.
se convertirá en:
A continuación, agregue un nuevo bloque de ubicación para manejar las solicitudes sin la extensión “.php”. Este bloque debe incluir la regla de “rewrite” para redirigir la solicitud al archivo PHP correcto.
El archivo de configuración final de Nginx se verá así:
Con esta configuración, las solicitudes con y sin la extensión “.php” se manejarán correctamente y las URL limpias se reescribirán a sus contrapartes de archivos PHP.