На самом деле не происходит связи между 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
ЗДЕСЬ .
if ( !defined(‘ABSPATH’)) exit;
!defined(‘ABSPATH’)
значение равно true, это означает, что что-то кроме WordPress пытается получить доступ к скрипту (потому что ABSPATH определен в wp-config.php), и поэтому он должен игнорировать этот запрос. Это верно?ABSPATH
любой другой скрипт PHP, поэтому он разрешит другие скрипты на вашем собственном сервере. Чего он не допустит, так это прямого доступа к этому файлу извне вашего сервера (скажем, из браузера). Поскольку доступ к этому файлу напрямую, пользователи никоим образом не могут определитьABSPATH
.