es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

NGinx / PHP muestra el error 404 No Encontrado al redirigir desde el sitio web principal.

Conseguí que mi sitio web principal funcionara, pero al hacer clic en cualquier botón del sitio web me lleva a un Error 404. Los botones muestran que están buscando una página real (como /signin o /signup) en el directorio público, pero solo está el index.php. ¿Alguna idea de por qué? Pegué a continuación la configuración de nginx y el registro de errores.

server {
    listen 80;
    listen [::]:80;
    listen 443;
    listen [::]:443;
    root /root/var/www/myforum/public;
    index index.php index.html index.htm index.nginx-debian.html;
    server_name www.example.com;

    location ~ \.php$ {
        try_files $uri $uri/ =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Registro de errores al hacer clic en el botón “Sign In” en mi sitio web:

2021/12/10 01:54:34

53165#53165: *333 open() “/root/var/www/myforum/public/signin” failed (2: No such file or directory), client: 1xx.xxx.xx.xxx, server: www.example.com, request: “GET /signin HTTP/1.1”, host: “xx.xxx.xxx.1xx”, referrer: “http://xx.xxx.xxx.1xx/”

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Según la configuración de nginx y el registro de errores, parece que el problema es que el servidor está buscando un directorio llamado “signin” en el directorio público, pero no existe. El servidor está configurado para servir archivos PHP utilizando fastcgi, por lo que cualquier solicitud de un archivo PHP debe pasar por el bloque “location ~ .php$”. Sin embargo, parece que el botón de inicio de sesión en el sitio web no está activando una solicitud de archivo PHP, en su lugar está intentando cargar “/signin” directamente.

    Para resolver el problema, puedes actualizar la configuración de nginx para manejar solicitudes que no sean archivos PHP. Una forma de hacer esto es añadir un bloque de ubicación separado para archivos que no sean PHP, de la siguiente manera:

        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
    

    Con este bloque, cualquier solicitud que no sea un archivo PHP será manejada por el servidor intentando encontrar el archivo solicitado, luego el directorio solicitado y, finalmente, se fallback al archivo index.php. Esto debería resolver los errores 404 al hacer clic en el botón de inicio de sesión.

    Después de realizar los cambios en la configuración de nginx, asegúrate de reiniciar el servicio de nginx para aplicar los cambios.

Comments are closed.