En realidad no hay comunicación entre Apache y WordPress. La "magia" está sucediendo en las mod_rewrite
reglas de Apache .
Para una instalación estándar de WordPress, tiene las siguientes reglas en .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 línea: RewriteRule . /index.php [L]
Aquí, le estamos diciendo a Apache que redirija internamente cualquier solicitud de URL /index.php
.
A menos que: esta línea: seRewriteCond %{REQUEST_FILENAME} !-f
vuelva falsa. Eso significa que, al agregar estoRewriteCond
con lo anteriorRewriteRule
, le estamos diciendo a Apache que envíe todas las solicitudes/index.php
, pero no si es un archivo existente .
Además, cuando esta línea: seRewriteCond %{REQUEST_FILENAME} !-d
vuelve falsa. Eso significa que, al agregar estoRewriteCond
con lo anteriorRewriteRule
, le estamos diciendo a Apache que envíe todas las solicitudes/index.php
, pero no si es un directorio existente .
Entonces, al final, a menos que sea un archivo existente o un directorio existente, Apache está enviando internamente todas las demás solicitudes a /index.php
.
Como puede ver, no hay comunicación entre Apache y WordPress. Apache es decidir todo por sí mismo y nos están diciendo que lo haga utilizando RewriteRule
yRewriteCond
directivas.
Lea más sobre mod_rewrite
AQUÍ .