La página 404.php del tema de Wordpress no se encuentra, el servidor muestra la página 404 predeterminada de Apache

26 mar 2014, 14:22:20
Vistas: 13.8K
Votos: 7

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.

6
Comentarios

La mayoría de las veces WordPress puede hacer lo que le pidas automáticamente. ¿Cuál es la dirección de una página que funcione? ¿Y la dirección que estás usando que devuelve el error 404 incorrecto? ¿Esto es multisitio?

s_ha_dum s_ha_dum
26 mar 2014 14:47:50

¿Estás usando enlaces permanentes "bonitos" (pretty permalinks)? ¿Y has verificado que mod_rewrite esté habilitado y que las reglas correctas estén en tu archivo .htaccess?

TheDeadMedic TheDeadMedic
26 mar 2014 14:49:29

Mi instalación está en 192.168.1.8/wordpress/ Esa es la página principal de mi sitio. Cuando ingreso algo como 192.168.1.8/wordpress/asdasdasd, entonces me redirige a la página de error 404 del servidor Apache.

Jaromír the Greenhorn Jaromír the Greenhorn
26 mar 2014 14:49:49

Tengo seleccionado el estilo de permalink predeterminado, ej. http://192.168.1.8/wordpress/?p=123

Jaromír the Greenhorn Jaromír the Greenhorn
26 mar 2014 14:50:37

@TheDeadMedic ¿Dónde puedo verificar mod_rewrite y .htaccess?

Jaromír the Greenhorn Jaromír the Greenhorn
26 mar 2014 14:52:24

@user261562 : con los permalinks predeterminados no necesitas mod_rewrite ni .htaccess, pero ese es más bien el problema. Déjame verificarlo y publicaré una respuesta.

s_ha_dum s_ha_dum
26 mar 2014 14:53:20
Mostrar los 1 comentarios restantes
Todas las respuestas a la pregunta 2
9

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 directorioindex.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.

26 mar 2014 15:07:40
Comentarios

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 Jaromír the Greenhorn
26 mar 2014 15:32:45

Por cierto, el archivo .htaccess está en la carpeta /var/www/wordpress/, ¿es correcto?

Jaromír the Greenhorn Jaromír the Greenhorn
26 mar 2014 15:40:53

.htaccess debería estar en el mismo directorio que wp-load.php normalmente. Eso parece correcto.

s_ha_dum s_ha_dum
26 mar 2014 15:44:00

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 Jaromír the Greenhorn
26 mar 2014 15:57:59

hmmm... algo raro pasa con tu configuración y no sé qué es.

s_ha_dum s_ha_dum
26 mar 2014 15:58:30

Sí, algo es sospechoso, intentaré una reinstalación limpia.

Jaromír the Greenhorn Jaromír the Greenhorn
26 mar 2014 15:59:38

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 s_ha_dum
26 mar 2014 16:00:02

"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 TheDeadMedic
26 mar 2014 16:00:55

@TheDeadMedic: sí, buen punto.

s_ha_dum s_ha_dum
26 mar 2014 16:05:07
Mostrar los 4 comentarios restantes
2

WordPress solo manejará los errores 404 si los enlaces permanentes "bonitos" están habilitados - ve a Ajustes > Enlaces permanentes y elige una de las opciones que no sea la predeterminada (o utiliza tu propia configuración).

26 mar 2014 14:57:56
Comentarios

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 Jaromír the Greenhorn
26 mar 2014 15:01:01

¡Revisa la respuesta de @s_ha_dum, lo explicará mucho mejor!

TheDeadMedic TheDeadMedic
26 mar 2014 15:09:05