In der MU-Variante von Wordpress können verschiedene Sites parallel angelegt und verwaltet werden. Bei mir liegen die Blogs alle im Unterverzeichnis /blog/
z.B.
www.hobbitonhill.de/blog/apfelblog
www.hobbitonhill.de/blog/birnenblog
www.hobbitonhill.de/blog/pflaumenblog
Die Unterzeichnisse /apfelblog /birnenblog usw. gibt es nicht physisch, sondern nur virtuell, da die Informationen aller Blogs zentral in einer Datenbabk abgespeichert sind.
Die URL eines Blogs wird nun per url.rewrite wie folgt aufgelöst (ich nutze lighttpd als Webserver):
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
|
$HTTP["host"] =~ "^www.hobbitonhill.de$" {
url.rewrite-once = (
"^/blog/(.*/)?files/(.+)$" => "/blog/wp-includes/ms-files.php?file=$2",
"^/blog/(.*/)?(wp-(content|admin|includes).*)$" => "/blog/$2",
"^/blog/([_0-9a-zA-Z-]+/)?(.*\.php)$" => "/blog/$2",
"^/blog/([_0-9a-zA-Z-]+/)?(.*\.php/.*)$" => "/blog/$2",
"^/blog/([_0-9a-zA-Z-]+/?)?$" => "/blog/index.php",
"^/blog/([_0-9a-zA-Z-]+/)?(.*)$" => "/blog/$2"
)
}
|
Das funktioniert auch. Alle Blogs und ihre Seiten werden über die o.g. spezifischen URLs erreicht. Ich verstehe nur nicht, warum das so funktionieren kann.
Beispiel:
Angenommen ich tippe im Browser dieses ein, um eine spezielle Seite im "Apfelblog" zu erreichen:
http://www.hobbitonhill.de/blog/apfelblog/?page_id=20
Dann übersetzt der Webserver das doch erst einmal mit der untersten Regel intern in:
http://www.hobbitonhill.de/blog/page_id=20
Mit dieser Information geht er jetzt in das Dateisystem. Aber woher weiß Wordpress jetzt noch, dass es um den Apfelblog gehen soll, denn diese Information wurde ja eleminiert?
Das würde ich gerne verstehen.