Na verdade, não há comunicação entre o Apache e o WordPress. A "mágica" está acontecendo nas mod_rewrite
regras do Apache .
Para uma instalação padrão do WordPress, você tem as seguintes regras em .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
Observe esta linha: RewriteRule . /index.php [L]
Aqui, estamos dizendo ao Apache para redirecionar internamente qualquer solicitação de URL para /index.php
.
A menos que: esta linha:RewriteCond %{REQUEST_FILENAME} !-f
se torne falsa. Isso significa que, ao adicionar issoRewriteCond
com o exposto acimaRewriteRule
, estamos dizendo ao Apache para enviar todas as solicitações/index.php
, mas não se for um arquivo existente .
Além disso, quando esta linha:RewriteCond %{REQUEST_FILENAME} !-d
se tornar falsa. Isso significa que, ao adicionar issoRewriteCond
com o exposto acimaRewriteRule
, estamos dizendo ao Apache para enviar todas as solicitações/index.php
, mas não se for um diretório existente .
Portanto, no final, a menos que seja um arquivo ou diretório existente, o Apache está enviando internamente todas as outras solicitações para /index.php
.
Então, como você vê, nenhuma comunicação está acontecendo entre o Apache e o WordPress. O Apache está decidindo tudo sozinho e estamos dizendo para fazer isso usando RewriteRule
e RewriteCond
diretivas.
Leia mais sobre mod_rewrite
AQUI .