Aslında Apache ve WordPress arasında iletişim yok. "Büyü" Apache mod_rewrite
kurallarında oluyor .
Standart bir WordPress kurulumu için aşağıdaki kurallara sahipsiniz .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
Bu satıra dikkat edin: RewriteRule . /index.php [L]
Burada, Apache'ye herhangi bir URL isteğini dahili olarak yönlendirmesini söylüyoruz /index.php
.
Tabii: bu satır:RewriteCond %{REQUEST_FILENAME} !-f
yanlış olur. BuRewriteCond
, yukarıdakileriekleyerekRewriteRule
Apache'ye tüm istekleri göndermesini söylüyoruz/index.php
, ancak varolan bir dosya değilse .
Ayrıca, bu satır:RewriteCond %{REQUEST_FILENAME} !-d
yanlış olur. BuRewriteCond
, yukarıdaki ilebirlikte ekleyerekRewriteRule
, Apache'ye tüm isteği göndermesini söylüyoruz/index.php
, ancak mevcut bir dizinse değil .
Sonuç olarak, varolan bir dosya veya mevcut bir dizin olmadığı sürece Apache dahili olarak diğer tüm istekleri gönderiyor /index.php
.
Gördüğünüz gibi Apache ve WordPress arasında hiçbir iletişim yok. Apache her şeye kendisi karar veriyor ve biz de bunu kullanarak RewriteRule
ve RewriteCond
direktifleri yapmasını söylüyoruz .
mod_rewrite
HERE hakkında daha fazla bilgi edinin .