На самом деле не происходит связи между Apache и WordPress. «Волшебство» происходит в mod_rewrite
правилах Apache .
Для стандартной установки WordPress у вас есть следующие правила .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
Обратите внимание на эту строку: RewriteRule . /index.php [L]
здесь мы говорим Apache о внутреннем перенаправлении любого URL-запроса /index.php
.
Если: эта строка:RewriteCond %{REQUEST_FILENAME} !-f
становится ложной. Это означает, что, добавив этоRewriteCond
к вышесказанномуRewriteRule
, мы сообщаем Apache отправлять все запросы/index.php
, но не в том случае, если это существующий файл .
Также, когда эта строка:RewriteCond %{REQUEST_FILENAME} !-d
становится ложной. Это означает, что, добавив этоRewriteCond
к вышесказанномуRewriteRule
, мы сообщаем Apache отправлять все запросы/index.php
, но не в том случае, если это существующий каталог .
Итак, в конце концов, если это не существующий файл или существующий каталог, Apache внутренне отправляет все остальные запросы /index.php
.
Итак, как вы видите, между Apache и WordPress не происходит никакой связи. Apache решает сам все и мы говорим это , чтобы сделать это , используя RewriteRule
и RewriteCond
директивы.
Подробнее о mod_rewrite
ЗДЕСЬ .