[h1]mod_rewrite[/h1]
Der für kleinere Projekte eher gebräuchliche Weg ist mod_rewrite. Das ist ein Apache-Modul, welches es erlaubt, bestimmte abgefragte URLs an andere URLs weiterzuleiten (Apache mod_rewrite). Für lighttpd gibt es ebenfalls solch ein Modul (Lighttpd mod_rewrite). Diese Umleitung geht zum einen extern (der User bemerkt die Umleitung) und auch intern (der User bemerkt die Umleitung nicht).
Was du hier möchtest, wäre die interne Lösung.
Bei Apache werden die Daten für mod_rewrite üblicherweise in eine .htaccess-Datei geschrieben. Bei lighttpd stehen sie meines Wissens in einer zentralen Konfigurationsdatei.
Rewrite-Rules für Apache sehen allgemein folgendermaßen aus:
[code=pseudo]RewriteRule nutzer-url echte-url[/code]
Für dein gewünschtes Beispiel sähe die .htaccess im Apache folgendermaßen aus:
[code=pseudo]RewriteEngine On
RewriteRule guestbook,([a-z]+),([0-9]+),[a-zA-Z]*\.html index.php?action=guestbook&mode=$1&guestbook_id=$2
RewriteRule ([a-z]+)\.html index.php?action=$1[/code]
Die zweite RewriteRule ist eine allgemeine RewriteRule, die du sicher möchtest, um andere Anfragen im selben Format auf die entsprechenden Aktionen umzuleiten. Allerdings tragen diese natürlich nicht alle die Parameter mode und guestbook_id mit sich. Daher haben wir darüber oben eine spezielle RewriteRule eingefügt, die nur auf guestbook zutrifft.
Ich habe absichtlich nicht [NC] gesetzt, um zumindest außerhalb des Thread-Titels eine Einheit für lowercase-Zeichen zu wahren. Ich weiß nicht, ob Google case-insensitive arbeitet. Falls dies der Fall sein sollte, dann könnte das Setzen des [NC]-Flags dazu führen, dass du ein [lexikon]Duplicate-Content[/lexikon] Problem hast.
Falls du trotzdem case-insensitivity wünschst:
[code=pseudo]RewriteEngine On
RewriteRule guestbook,([a-z]+),([0-9]+),[a-z]*\.html index.php?action=guestbook&mode=$1&guestbook_id=$2 [NC]
RewriteRule ([a-z]+)\.html index.php?action=$1 [NC][/code]
Damit kannst du auch deine interne PHP-Struktur vollkommen gleich lassen. Du musst nur alle Links anpassen, damit sie auf die neuen URLs zeigen.
[h1]Verarbeitung mit PHP[/h1]
Für größere Projekte mit MVC-Pattern wird meist eine Verarbeitung direkt in PHP gewählt. Dabei wird die REQUEST_URI auf bestimmte Bestandteile analysiert, welche dann wiederum zum Aufruf der richtigen Komponenten führen. Das dürfte allerdings für dich zu weit führen.