In realtà non c'è comunicazione tra Apache e WordPress. La "magia" sta accadendo in Apachemod_rewrite
regole di .
Per un'installazione standard di WordPress, hai le seguenti regole in .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
Nota questa riga: RewriteRule . /index.php [L]
qui, stiamo dicendo ad Apache di reindirizzare internamente qualsiasi richiesta URL a /index.php
.
A meno che: questa riga:RewriteCond %{REQUEST_FILENAME} !-f
diventi falsa. Ciò significa che, aggiungendo questoRewriteCond
con quanto sopraRewriteRule
, stiamo dicendo ad Apache di inviare tutte le richieste/index.php
, ma non se si tratta di un file esistente .
Inoltre, quando questa riga:RewriteCond %{REQUEST_FILENAME} !-d
diventa falsa. Ciò significa che, aggiungendo questoRewriteCond
con quanto sopraRewriteRule
, stiamo dicendo ad Apache di inviare tutte le richieste a/index.php
, ma non se si tratta di una directory esistente .
Quindi alla fine, a meno che non sia un file esistente o una directory esistente, Apache sta inviando internamente tutte le altre richieste a /index.php
.
Come vedi, non sta avvenendo alcuna comunicazione tra Apache e WordPress. Apache sta decidendo tutto da solo e gli stiamo dicendo di farlo usando RewriteRule
eRewriteCond
direttive.
Leggi di più mod_rewrite
QUI .