En realidad, no hay comunicación entre Apache y WordPress. La "magia" está ocurriendo en las reglas de Apache mod_rewrite
.
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 a /index.php
.
A menos que: esta línea: RewriteCond %{REQUEST_FILENAME} !-f
se vuelve falsa. Eso significa que, al agregar este RewriteCond
con el RewriteRule
anterior, le estamos diciendo a Apache que envíe todas las solicitudes a /index.php
, pero no si es un archivo existente .
También, cuando esta línea: RewriteCond %{REQUEST_FILENAME} !-d
se vuelve falsa. Eso significa que, al agregar este RewriteCond
con el RewriteRule
anterior, le estamos diciendo a Apache que envíe todas las solicitudes a /index.php
, pero no si es un directorio existente .
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
.
Entonces, como ves, no hay comunicación entre Apache y amp; WordPress. Apache está decidiendo todo por sí mismo y le estamos diciendo que lo haga usando las directivas RewriteRule
y RewriteCond
.
Lea más sobre mod_rewrite
AQUÍ .