„mod_rewrite“-Regeln wie in diesem Forum

D

D@nger

Hallo,
also mit modrewrite ist es ja möglich dynamische Seiten statisch aussehen zu lassen.
So, aber wie ist das mit diesem Forum. Die normale Adresse ist ja z.B.
showthread.php?goto=newpost&t=22268 und hier sieht es so aus:
php/242371-mit-mysql-tabellarisch-anordnen-last-post.html
Wie bekommt die htaccess-Datei den Thread-Titel und ersetzt dabei die Leerzeichen durch Bindestriche? Danke schon mal.

So, des weiteren, wenn man auf http://www.tutorials.de/forum/showthread.php?goto=newpost&t=22268 geht wird die URL in der Adresszeile automatisch in http://www.tutorials.de/forum/sonstige-3d-programme/22268-dxf-import-maya.html#post159809 umgewandelt. Ich wüsste auch gerne wie das möglich ist, vielen Dank.
 
Zuletzt bearbeitet von einem Moderator:
Der Titel ist bei den Regeln ein variabler Teil, der eigentlich irrelevant ist. Eine entsprechende Regel könnte etwa wie folgt aussehen:
Code:
RewriteRule   ^[^/]+/([0-9]+)-[^.]+-last-post\.html$   showthread.php?goto=newpost&t=$1   [L]
Die hier gewählte Lösung, das „last-post“-Schlüsselwort so einzusetzen, dass es auch Teil des Titels sein kann, kann aber auch zu Problemen führen. Das Testthema namens „foobar-new-post“ führt so etwa in diesem Forum zu einer Endlosschleife und ist nicht zugänglich.
 
Das kannst du mit „mod_rewrite“ nicht realisieren, da das Modul keinen Zugriff auf die Datenbank hat.
 
Ok, danke, dann habe ich noch folgende Frage. Wenn man einen Redirect ausführt müsste es doch eine Endlos-Schleife geben oder? Denn es wird unsichtbar die "dynamische URL" aufgerufen. Wenn diese aber aufgerufen wird soll ja auf die statische verwiesen werden. Diese wiederum verweist auf die dynamische oder?
 
Das Modul heißt „mod_rewrite“, da Anfragen nicht nur umgeleitet sondern vor allem auch serverintern umgeschrieben werden können. Es stimmt jedoch, dass von „12345-foobar-last-post.html“ bis „12345-foobar.html#post123“ drei Einzelschritte notwendig sind wie etwa folgende:
  1. 12345-foobar-last-post.html wird serverintern auf showthread.php?goto=newpost&t=12345 umgeschrieben
  2. showthread.php?goto=newpost&t=12345 sucht die Nummer des letzten Beitrags heraus und leitet auf 12345-foobar.html#post123 weiter
  3. 12345-foobar.html#post123 wird wiederum serverseitig umgeschrieben, sodass schließlich showthread.php?t=12345#post123 ausgeleifert wird
Alles sehr umständlich. Besser wäre es, direkt auf 12345-foobar.html#last-post zu verweisen und gleichzeitig einen Fragmentanker namens „last-post“ zu setzen. Die ersten beiden Schritte wären damit hinfällig.
 
Auch eine professionelle Software ist nicht immer vorbildhaft. Oft sind diese „Features“ im Frühstadium hinzugekommen und sind im Laufe der Entwicklung einfach nicht verbessert/überarbeitet worden.
 

Neue Beiträge

Zurück