Насправді зв’язок між 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
ТУТ читайте .