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