Wenn Sie eine Seite in WordPress erstellen, ist dies nur ein Eintrag in einer Datenbanktabelle. An diesem Speicherort befindet sich keine aktuelle Datei. Ich kann jedoch eine Datei an diesem Ort selbst erstellen und sie wird die Seite von WordPress stehlen. Ich lösche die Datei und sie kehrt nahtlos zur WordPress-Seite zurück.
Ich bin nur neugierig, wie dies erreicht wird. Vermutlich findet eine gewisse Kommunikation zwischen WordPress und Apache (?) Statt.
Momentan findet keine Kommunikation zwischen Apache und WordPress statt. Die "Magie" geschieht in Apache mod_rewrite
rules.
Für eine Standard-WordPress-Installation gelten in .htaccess
folgende Regeln:
# 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
Beachten Sie diese Zeile: RewriteRule . /index.php [L]
Hier weisen wir Apache an, URL-Anfragen intern an /index.php
umzuleiten.
außer:diese Zeile: RewriteCond %{REQUEST_FILENAME} !-f
wird falsch. Das bedeutet, dass wir durch Hinzufügen dieser RewriteCond
mit der obigen RewriteRule
Apache anweisen, alle Anforderungen an /index.php
zu senden, abernicht, wenn es sich um eine vorhandene Datei handelt.
auch wenndiese Zeile: RewriteCond %{REQUEST_FILENAME} !-d
wird falsch. Das bedeutet, dass wir durch Hinzufügen dieser RewriteCond
mit der obigen RewriteRule
Apache anweisen, alle Anforderungen an /index.php
zu senden, abernicht, wenn es sich um ein vorhandenes Verzeichnis handelt.
Letztendlich sendet Apache alle anderen Anfragen intern an /index.php
, es sei denn, es handelt sich um eine vorhandene Datei oder ein vorhandenes Verzeichnis.
Wie Sie sehen, findet keine Kommunikation zwischen Apache und WordPress statt. Apache entscheidet alles selbst und wir weisen es an, dies mit den Anweisungen RewriteRule
und RewriteCond
zu tun.
Lesen Sie mehr über mod_rewrite
HIER .