Hallo borisbaer,
Stattdessen hätte ich gerne, dass z.B. die URL …/games/demons-souls?mods mir auch direkt als Tab-Content den Inhalt von mods.php anzeigt.
Das setzt voraus, dass mods.php keine vollständige HTML Seite liefert, sondern nur das HTML Fragment, das in den Tab hinein soll.
Im Haupt-PHP Script, das die Rahmenseite liefert, kannst Du mit isset($_GET['mods']) abfragen, ob ein Parameter namens mods vorhanden ist. Das ist allerdings umständlich, weil Du für jede Page eine eigene Abfrage brauchst. Wenn Du nur den Pagename angeben willst, guck Dir $_SERVER['QUERY_STRING'] an und prüfe, ob der Wert in einer Liste erlaubter Pages steht, bevor Du die Page inkludierst.
Wenn der Parameter dann identifiziert ist, kannst Du im PHP an der Stelle, wo die Page eingebunden werden muss, sie einfach mit include hereinholen.
Clientseitig kannst Du, wie Dedlfix sagte, durch Zugriffe auf das History-API dafür sorgen, dass ein Page-Wechsel sich in URL und URL-Historie niederschlägt.
ABER
Ich würde das nicht tun. Bei einer Ajax-getriebenen Seite kannst Du auch URLs mit Hash-Teil vewenden: …/games/demons-souls#mods
Diesen Hash-Teil kannst Du am Client auswerten und die Page per AJAX hereinholen. Das musst Du beim Start der Seite tun, und bei URL-Änderungen die Page anpassen. Dazu gibt's die hashchange und popstate Events auf dem window Objekt.
Rolf
sumpsi - posui - obstruxi