web-dev-qa-db-fra.com

404.php de Wordpress Theme introuvable, le serveur utilise par défaut la page 404 d'Apache

si je tape simplement quelque chose qui provoque une erreur 404 sur mon installation Wordpress, Wordpress ne charge pas son propre fichier 404.php, mais le message d'erreur 404 du serveur Apache s'affiche.

Quel est le problème avec mon installation Wordpress? Dois-je modifier le fichier de configuration du serveur Apache et le rediriger vers la page Wordpress 404.php?

METTRE À JOUR:

J'ai partiellement réussi à faire fonctionner cela, j'ai raté la directive FileInfo dans le fichier /etc/Apache2/sites-available/default. Cependant, tous les objets ne sont pas pris avec élégance.

4

Les choses fonctionnent comme elles sont supposées, et peut-être la seule façon dont elles fonctionnent {peuvent}. Laisse-moi expliquer.

Sans un module Apache appelé mod_rewrite (ou le composant Nginx ou IIS équivalent), les demandes adressées aux pages PHP doivent accéder à un fichier système réel. C'est ce que vous voyez avec des requêtes comme 192.168.1.8/wordpress/?p=123. Le fichier en cours d’accès est le fichier "index" du répertoire - index.php. Cette demande est l'équivalent de 192.168.1.8/wordpress/index.php?p=123. Ce que vous faites, c'est demander un autre fichier/répertoire avec des requêtes comme celle-ci - 192.168.1.8/wordpress/asdasdasd-- et aucun fichier ni répertoire de ce type n'existe dans le système de fichiers.

Avec mod_rewrite et .htaccess correctement configuréstoutes les demandesêtre envoyé à index.php. Jetez un coup d'œil au fichier WordPress .htaccess :

# 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

Cette RewriteRule pousse tout (presque tout) à index.php. Cela permet à WordPress de traiter la demande toute, même les demandes de fichiers qui n'existent pas physiquement sur le système.

Sans de jolis permaliens activés, c'est-à-dire avec les permaliens "par défaut" sélectionnés, WordPress n'essaiera même pas d'analyser les requêtes, ce qui revient à ne pas avoir du tout mod_rewrite ou .htaccess.

Et, si WordPress ne peut pas analyser la demande, WordPress ne peut pas charger le 404.php du thème. Bien entendu, Apache sait toujours que la demande est incorrecte et charge son propre message 404.

Donc, sans mod_rewrite, un fichier .htaccess approprié et de jolis liens permanents, vous obtenez le comportement que vous décrivez, qui correspond exactement à la manière dont les choses sont censées fonctionner.

6
s_ha_dum

WordPress ne gérera que les 404 si de jolis permaliens sont activés - allez dans Paramètres> Permaliens et choisissez l’une des options autres que celle par défaut (ou utilisez les vôtres).

3
TheDeadMedic