La página 404.php del tema de Wordpress no se encuentra, el servidor muestra la página 404 predeterminada de Apache
Si escribo algo para provocar un error 404 en mi instalación de WordPress, WordPress no carga su propio archivo 404.php, sino que se muestra el mensaje de error 404 predeterminado del servidor Apache.
¿Qué está mal en mi instalación de WordPress? ¿Necesito editar el archivo de configuración de Apache para redirigir a la página 404.php de WordPress?
ACTUALIZACIÓN:
He logrado solucionarlo parcialmente, me faltaba la directiva FileInfo en el archivo /etc/apache2/sites-available/default. Aunque todavía no todas las solicitudes se manejan correctamente.
Las cosas están funcionando como se supone que deben hacerlo, y posiblemente de la única manera en que pueden funcionar. Permíteme explicarlo.
Sin un módulo de Apache llamado mod_rewrite (o su equivalente en Nginx o IIS), las solicitudes a páginas PHP deben dirigirse a un archivo real en el sistema de archivos. Eso es lo que ves con solicitudes como 192.168.1.8/wordpress/?p=123. El archivo al que se accede es el archivo "índice" del directorio— index.php. Esa solicitud es equivalente a 192.168.1.8/wordpress/index.php?p=123. Lo que estás haciendo es solicitar algún otro archivo o directorio con solicitudes como esta— 192.168.1.8/wordpress/asdasdasd— y no existe tal archivo o directorio en el sistema de archivos.
Con mod_rewrite y .htaccess configurados correctamente, todas las solicitudes se envían a index.php. Echa un vistazo al archivo .htaccess predeterminado de WordPress:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Esa RewriteRule redirige todo (casi todo) a index.php. Eso permite que WordPress procese cualquier solicitud, incluso solicitudes de archivos que no existen físicamente en el sistema.
Sin los permalinks bonitos habilitados— es decir, con los permalinks "predeterminados" seleccionados— WordPress ni siquiera intentará analizar las solicitudes, lo que equivale a no tener mod_rewrite o .htaccess en absoluto.
Y, si WordPress no puede analizar la solicitud, WordPress no puede cargar el 404.php del tema. Apache, por supuesto, aún sabe que la solicitud es incorrecta y muestra su propio mensaje 404.
Por lo tanto, sin mod_rewrite, un archivo .htaccess adecuado y permalinks bonitos, obtienes el comportamiento que describes, que es exactamente cómo se supone que deben funcionar las cosas.
He habilitado mod_rewrite con a2enmode rewrite y he creado el archivo .htaccess con el contenido de ejemplo de la página Wordpress>Usando Permalinks, pero todavía no funciona correctamente. He notado que si solicito servidor/wordpress/index (sin .php) redirige a la página personalizada 404 de Wordpress, pero no si solicito algo sin sentido.
Jaromír the Greenhorn
Por cierto, el archivo .htaccess está en la carpeta /var/www/wordpress/, ¿es correcto?
Jaromír the Greenhorn
.htaccess debería estar en el mismo directorio que wp-load.php normalmente. Eso parece correcto.
s_ha_dum
Bueno, me he quedado sin ideas, qué podría estar causando este problema, supongo que tener todos los archivos en el subdirectorio de /var/wwww/ no es una buena idea para alojar Wordpress. Pero gracias de todos modos, aceptaré tu respuesta como la mejor, ya que has puesto mucho esfuerzo en esto y espero que futuros usuarios la encuentren útil para solucionar su problema.
Jaromír the Greenhorn
Sí, algo es sospechoso, intentaré una reinstalación limpia.
Jaromír the Greenhorn
Los servidores tienen configuraciones predeterminadas diferentes para los directorios raíz, pero no hay razón por la que no puedas ejecutar WordPress desde un subdirectorio. Yo lo hago todo el tiempo.
s_ha_dum
"incluso solicitudes de archivos que no existen físicamente en el sistema" - técnicamente, las reglas solo reescriben en este caso, de ahí los RewriteCond :)
TheDeadMedic
He verificado 3 opciones (Día y nombre, Numérico y Nombre de la publicación) y esto no parece tener efecto, es decir, sigo recibiendo el mensaje de error 404 de Apache y no el 404.php. Por cierto, estoy usando el tema Twenty Thirteen.
Jaromír the Greenhorn