Sebenarnya tidak ada komunikasi yang terjadi antara Apache dan WordPress. "Sihir" itu terjadi dalam mod_rewriteaturan 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} !-fmenjadi salah. Itu berarti, dengan menambahkan iniRewriteConddengan 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} !-dmenjadi salah. Itu berarti, dengan menambahkan iniRewriteConddengan 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 RewriteRuledan RewriteCondmengarahkannya.
Baca lebih lanjut tentang mod_rewriteDI SINI .