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 .
if ( !defined(‘ABSPATH’)) exit;
!defined(‘ABSPATH’)
dievaluasi benar, itu berarti sesuatu selain WordPress sedang mencoba mengakses skrip (karena ABSPATH didefinisikan dalam wp-config.php), dan karena itu harus mengabaikan permintaan itu. Apakah itu benar?ABSPATH
dalam skrip PHP lain juga, jadi skrip lain akan dibolehkan di server Anda sendiri. Apa yang tidak akan diizinkan adalah akses langsung file itu dari luar server Anda (katakanlah dari browser). Karena dengan mengakses file itu secara langsung, pengguna sama sekali tidak dapat mendefinisikanABSPATH
.