En fait, il n'y a aucune communication entre Apache et WordPress. La "magie" se produit dans les mod_rewrite
règles Apache .
Pour une installation WordPress standard, vous avez les règles suivantes dans .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
Remarquez cette ligne: RewriteRule . /index.php [L]
ici, nous demandons à Apache de rediriger en interne toute demande d'URL vers /index.php
.
Sauf: cette ligne:RewriteCond %{REQUEST_FILENAME} !-f
devient fausse. Cela signifie qu'en ajoutant ceciRewriteCond
aveccequi précèdeRewriteRule
, nous demandons à Apache d'envoyer toutes les demandes à/index.php
, mais pas s'il s'agit d'un fichier existant .
Aussi, lorsque cette ligne:RewriteCond %{REQUEST_FILENAME} !-d
devient fausse. Cela signifie qu'en ajoutant ceciRewriteCond
aveccequi précèdeRewriteRule
, nous demandons à Apache d'envoyer toutes les requêtes à/index.php
, mais pas s'il s'agit d'un répertoire existant .
Donc à la fin, à moins qu'il ne s'agisse d'un fichier ou d'un répertoire existant, Apache envoie en interne toutes les autres demandes à /index.php
.
Donc, comme vous le voyez, aucune communication ne se produit entre Apache et WordPress. Apache décide tout lui-même et nous lui disons de le faire en utilisant RewriteRule
etRewriteCond
directives .
En savoir plus sur mod_rewrite
ICI .
if ( !defined(‘ABSPATH’)) exit;
!defined(‘ABSPATH’)
true, cela signifie autre chose que WordPress essaie d'accéder au script (car ABSPATH est défini dans wp-config.php), et par conséquent, il doit ignorer cette demande. Est-ce exact?ABSPATH
dans n'importe quel autre script PHP, il autorisera donc d'autres scripts sur votre propre serveur. Ce qu'il ne permet pas, c'est l'accès direct à ce fichier depuis l'extérieur de votre serveur (par exemple depuis un navigateur). Parce qu'en accédant directement à ce fichier, les utilisateurs ne sont en aucun cas en mesure de définirABSPATH
.