Na verdade, não há comunicação entre o Apache e o WordPress. A "mágica" está acontecendo nas mod_rewrite
regras do Apache .
Para uma instalação padrão do WordPress, você tem as seguintes regras em .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 linha: RewriteRule . /index.php [L]
Aqui, estamos dizendo ao Apache para redirecionar internamente qualquer solicitação de URL para /index.php
.
A menos que: esta linha:RewriteCond %{REQUEST_FILENAME} !-f
se torne falsa. Isso significa que, ao adicionar issoRewriteCond
com o exposto acimaRewriteRule
, estamos dizendo ao Apache para enviar todas as solicitações/index.php
, mas não se for um arquivo existente .
Além disso, quando esta linha:RewriteCond %{REQUEST_FILENAME} !-d
se tornar falsa. Isso significa que, ao adicionar issoRewriteCond
com o exposto acimaRewriteRule
, estamos dizendo ao Apache para enviar todas as solicitações/index.php
, mas não se for um diretório existente .
Portanto, no final, a menos que seja um arquivo ou diretório existente, o Apache está enviando internamente todas as outras solicitações para /index.php
.
Então, como você vê, nenhuma comunicação está acontecendo entre o Apache e o WordPress. O Apache está decidindo tudo sozinho e estamos dizendo para fazer isso usando RewriteRule
e RewriteCond
diretivas.
Leia mais sobre mod_rewrite
AQUI .
if ( !defined(‘ABSPATH’)) exit;
!defined(‘ABSPATH’)
avaliado como verdadeiro, significa que algo diferente do WordPress está tentando acessar o script (porque o ABSPATH está definido em wp-config.php) e, portanto, deve ignorar essa solicitação. Isso está correto?ABSPATH
em qualquer outro script PHP, também permitirá outros scripts em seu próprio servidor. O que não permitirá é o acesso direto a esse arquivo de fora do seu servidor (por exemplo, do navegador). Porque, ao acessar esse arquivo diretamente, os usuários não conseguem definirABSPATH
.