Aslında Apache ve WordPress arasında iletişim yok. "Büyü" Apache mod_rewritekuralları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} !-fyanlış olur. BuRewriteCond, yukarıdakileriekleyerekRewriteRuleApache'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} !-dyanlış 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 RewriteRuleve RewriteConddirektifleri yapmasını söylüyoruz .
mod_rewriteHERE hakkında daha fazla bilgi edinin .