El error 404 en XAMPP es una de esas cosas que te hacen perder una tarde entera. Y te lo digo claro: el 90% de las veces no es que el archivo no exista, es que algo en la configuración está mal atado. Vamos a resolverlo con un orden lógico, sin tocar archivos al azar.
Si tu proyecto está en C:xampphtdocsmi_proyecto, la URL correcta es http://localhost/mi_proyecto. Ni una barra de más, ni una letra cambiada. He visto a gente escribir http://localhost/xampp/mi_proyecto y quedarse mirando la pantalla como si el servidor les debiera algo.
Ojo con las mayúsculas. En Windows no suele importar, pero si estás montando XAMPP en Linux o WSL, mi_proyecto y Mi_Proyecto son cosas distintas. Y si has metido el proyecto en una subcarpeta dentro de htdocs, asegúrate de que la ruta coincide exactamente. Este es el primer filtro del error 404 en XAMPP y elimina un montón de casos absurdos.
El archivo .htaccess: el sospechoso habitual
Si la URL está bien, el siguiente en la lista es el .htaccess. Este archivo es un dolor de cabeza precioso. Si falta o está corrupto, Apache no sabe redirigir las peticiones y suelta el 404 sin pestañear. En WordPress es vital.
Búscalo en C:xampphtdocstu_carpeta. Si no está, créalo con el Bloc de notas (ojo, guardado como todos los archivos, no como .txt) y pega esto:
# BEGIN WordPress
RewriteEngine On
RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Guárdalo como .htaccess con el punto delante. Reinicia Apache desde el panel de XAMPP. Muchas veces, solo con esto, el error 404 en XAMPP desaparece. Si el archivo ya existía, renómbralo a .htaccess_backup y crea uno nuevo desde cero. A veces el original está corrupto y no se ve a simple vista.
Plugins de WordPress: los reyes del desastre
Si el 404 apareció justo después de instalar o actualizar un plugin, ya tienes al culpable. Desactívalos todos desde el panel. Si ni siquiera puedes entrar al admin, tira de fuerza bruta: renombra la carpeta plugins dentro de wp-content a plugins_old. Eso los desactiva todos de golpe.
Si el error se va, ve activándolos de uno en uno hasta que vuelva a petar. Y no te fíes de desinstalarlos solo desde WordPress. Entra a http://localhost/phpmyadmin, revisa la tabla wp_options y limpia la basura que dejan algunos plugins. Te sorprendería la cantidad de residuos que se acumulan y que pueden volver a romper las URLs.
El puerto 80: la guerra silenciosa
Apache usa el puerto 80 por defecto, pero Skype, IIS o cualquier otro servidor web pueden estar ocupándolo. Cuando eso pasa, Apache arranca a medias o directamente no responde, y tú te comes un error 404 en XAMPP sin entender nada.
En el panel de control de XAMPP, pulsa “Config” al lado de Apache y abre httpd.conf. Busca Listen 80 y cámbialo a Listen 8080. Busca también ServerName localhost:80 y pon localhost:8080. Guarda y reinicia.
Prueba en el navegador con http://localhost:8080/tu_proyecto. Si funciona, ya sabes lo que pasaba. Pero esto tiene un efecto colateral: todos tus proyectos pasarán a usar el :8080 en la URL. Si tienes WordPress instalado, tendrás que entrar a la base de datos y reemplazar todas las apariciones de http://localhost por http://localhost:8080, o los enlaces internos se romperán. No hay atajo limpio para esto, toca hacerlo a mano o con un script de SQL.
Virtual hosts: cuando localhost se queda corto
Si trabajas con varios proyectos o con un CMS que necesita dominios propios, los virtual hosts son tu solución. Y muchas veces Apache se comporta mejor con un dominio virtual que con localhost.
Edita C:xamppapacheconfextrahttpd-vhosts.conf y añade un bloque así:
<VirtualHost *:80>
ServerAdmin webmaster@tusitio.local
DocumentRoot “C:/xampp/htdocs/tu_proyecto”
ServerName tusitio.local
</VirtualHost>
Luego edita el archivo hosts en C:WindowsSystem32driversetc y añade la línea 127.0.0.1 tusitio.local. En el navegador usarás http://tusitio.local. Este paso soluciona el error 404 en XAMPP en entornos donde localhost se queda corto o donde otros servicios están interceptando peticiones.
Revisa que los archivos estén donde crees
Parece una tontería, pero más de una vez he estado editando un archivo en C:xampphtdocsproyecto mientras el navegador apuntaba a otra carpeta con un nombre parecido en otro sitio. El servidor solo sirve lo que está dentro de htdocs. Y dentro de tu carpeta debe haber un index.php o index.html. Si no hay archivo índice y el listado de directorios está desactivado, también te comes un 404.
Mi flujo es este: 1) URL, 2) .htaccess, 3) plugins, 4) puerto. Con eso resuelvo el 90% de los casos. Si has tocado la configuración de Apache o instalado algo nuevo, salta directo a los virtual hosts. No hace falta hacerlo todo a la vez: prueba, reinicia Apache y vuelve a probar.
Errores que veo una y otra vez en foros
- Creer que el 404 es porque el archivo no existe, cuando en realidad es el .htaccess el que manda las peticiones a index.php.
- Cambiar el puerto a 8080 y no actualizar las URLs en la base de datos de WordPress.
- Desinstalar un plugin desde el panel y dejar basura en wp_options que sigue rompiendo las redirecciones.
- Editar httpd.conf y olvidar reiniciar Apache. Los cambios no se aplican hasta que reinicias.
- Usar mayúsculas en las rutas cuando el sistema es sensible a ellas.
Al final, el error 404 en XAMPP es una pelea contra la configuración, no contra el código. Con paciencia y este orden, lo resuelves sin cargarte nada por el camino.