Como o WordPress cria URLs que o Apache conhece?

16

Quando você cria uma página no WordPress, é apenas uma entrada em uma tabela de banco de dados; não há arquivo real nesse local. No entanto, posso criar um arquivo nesse local e roubar a página do WordPress. Eu apago o arquivo e ele remonta à página do WordPress.

Estou apenas curioso sobre como isso é alcançado. Presumivelmente alguma comunicação está acontecendo entre o WordPress e o Apache (?).

    
por Matt 18.02.2017 / 15:08

1 resposta

27

Na verdade, não há comunicação entre o Apache e o WordPress. A "mágica" está acontecendo nas regras do Apache mod_rewrite .

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 falso. Isso significa que, adicionando esse RewriteCond com o RewriteRule acima, estamos dizendo ao Apache para enviar todos os pedidos para /index.php , mas não se for um arquivo existente .

Além disso, quando esta linha: RewriteCond %{REQUEST_FILENAME} !-d se torna falsa. Isso significa que, adicionando esse RewriteCond com o RewriteRule acima, estamos dizendo ao Apache para enviar todos os pedidos para /index.php , mas não se for um diretório existente .

Então, no final, a menos que seja um arquivo existente ou um diretório existente, o Apache está enviando internamente todos os outros pedidos para /index.php .

Então, como você vê, nenhuma comunicação está acontecendo entre o Apache & WordPress. O Apache está decidindo tudo sozinho e estamos dizendo para isso usando as diretivas RewriteRule e RewriteCond .

Leia mais sobre mod_rewrite AQUI .

    
por Fayaz 18.02.2017 / 15:21