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} !-fdiventi falsa. Ciò significa che, aggiungendo questoRewriteCondcon 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} !-ddiventa falsa. Ciò significa che, aggiungendo questoRewriteCondcon 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 RewriteRuleeRewriteCond direttive.
Leggi di più mod_rewriteQUI .