2009-08-11 18 views
2

Ich hatte das Vergnügen, einen Höhepunkt bei Wordpress-Quellcode zu nehmen; Ich frage mich, wie sie die benutzerdefinierte URL-Funktion verwaltet, aber ich konnte es nicht wirklich bekommen.Wordpress "Search Engine freundliche" URLs (Permalinks) Implementierung

Die Rewrite-Regeln innerhalb der Wordpress .htaccess-Datei leiten einfach alle Anfragen an index.php um.

Danach ist es mir ein Rätsel: wie sie example.com/this/title/is/cool/ Spiel index.php?p=233 ?

Antwort

3

machen Sobald es auf index.php umgeleitet ist, kann diese Datei auf $_SERVER['REQUEST_URI'] schauen, um zu bestimmen, was in dem this/title/is/cool Teil ist, und dann gehen Nachschlagen, welche Seite von einer Datenbank bedient werden soll, da REQUEST_URI die vollständige URI-Zeichenfolge auflistet, obwohl die tatsächliche Seiten-URL, zu der umgeleitet wurde, nur der erste Teil davon ist.

Zum Beispiel

http://www.example.com/foo/bar/ 

wird neu geschrieben

http://www.example.com/index.php/foo/bar/ 

Dies führt tatsächlich in http://www.example.com/index.php geladen, aber $_SERVER['REQUEST_URI'] die volle /index.php/foo/bar/ in ihm haben.

Einige Anwendungen einen anderen Ansatz verwenden, verwenden sie .htaccess, nur die hinteren „Verzeichnisse“ zu nehmen und sie in die Query-String setzen, so dass das Umschreiben so etwas wie dies zu:

http://www.example.com/index.php?path=/foo/bar/ 

in diesem Fall die Der mitgelieferte Pfad ist in _GET['path'] verfügbar.

+0

Danke! Ich dachte, es könnte so etwas sein, aber ich leugnete es, weil ich dachte, niemand kann sicher sein, dass Servervariablen überall verfügbar sind. $ _SERVER ['REQUEST_URI'] ist eigentlich eine zuverlässige Variable, die auf allen Setups vorhanden ist? – pixeline

+0

'$ _SERVER ['REQUEST_URI']' enthält nicht den vollständigen URI, sondern nur den URI-Pfad und die Abfrage. – Gumbo

+0

Danke Gumbo. Bearbeitet. – Amber