Sebenarnya tidak ada komunikasi yang terjadi antara Apache dan WordPress. "Sihir" itu terjadi dalam mod_rewrite
aturan Apache .
Untuk instalasi WordPress standar, Anda memiliki aturan berikut di .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
Perhatikan baris ini: RewriteRule . /index.php [L]
Di sini, kami memberi tahu Apache untuk mengalihkan secara internal setiap permintaan URL /index.php
.
Kecuali: baris ini:RewriteCond %{REQUEST_FILENAME} !-f
menjadi salah. Itu berarti, dengan menambahkan iniRewriteCond
dengan yang di atasRewriteRule
, kami memberi tahu Apache untuk mengirim semua permintaan/index.php
, tetapi tidak jika itu adalah file yang sudah ada .
Juga, ketika baris ini:RewriteCond %{REQUEST_FILENAME} !-d
menjadi salah. Itu berarti, dengan menambahkan iniRewriteCond
dengan yang di atasRewriteRule
, kami memberi tahu Apache untuk mengirim semua permintaan/index.php
, tetapi tidak jika itu adalah direktori yang ada .
Jadi pada akhirnya, kecuali itu file yang sudah ada atau direktori yang ada, Apache secara internal mengirimkan semua permintaan lainnya /index.php
.
Jadi seperti yang Anda lihat, tidak ada komunikasi yang terjadi antara Apache & WordPress. Apache memutuskan semuanya sendiri dan kami menyuruhnya menggunakan RewriteRule
dan RewriteCond
mengarahkannya.
Baca lebih lanjut tentang mod_rewrite
DI SINI .