¿Cómo crea WordPress las URL que Apache conoce?

16

Cuando creas una página en WordPress, es solo una entrada en una tabla de base de datos; no hay un archivo real en esa ubicación. Sin embargo, yo mismo puedo crear un archivo en esa ubicación y robará la página de WordPress. Elimino el archivo y vuelve a la página de WordPress.

Tengo curiosidad acerca de cómo se logra esto. Presumiblemente, se está produciendo alguna comunicación entre WordPress y Apache (?).

    
pregunta Matt 18.02.2017 - 15:08

1 respuesta

27

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Í .

    
respondido por el Fayaz 18.02.2017 - 15:21

Lea otras preguntas en las etiquetas