it-swarm.com.de

Wie erstellt WordPress URLs, die Apache kennt?

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.

17
Matt

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 .

27
Fayaz