Routing von URLs in PHP

8

Ich arbeite an einem Webseitenprojekt. Ich entschied mich für Apache, PHP (5.1.7, Version von meinem Dienstanbieter) und Dwoo (Templating) für diesen Zweck.

Ich möchte URLs zu meinen Vorlagen leiten. Ich bin mir bewusst, dass es viele Frameworks gibt, die so etwas tun. Ich frage mich nur, ob es einen schönen Weg gibt, es ohne zu erreichen.

Ich habe mein Projekt wie folgt eingerichtet:

  • src / dwoo - Dwoo-Dateien
  • index.php - Dies sollte Routing handhaben. Derzeit rendert es nur die Titelseite der Website mit einer Vorlage.
  • Vorlagen - Vorlagen, die tatsächliche Seiten darstellen.

Es gibt eine minimale Menge an Geschäftslogik (kein echtes Modell). Es sind alles nur ziemlich statische Seiten. Die Verwendung von Vorlagen erleichtert die Wartung (Vererbung).

Haben Sie eine Idee, wie Sie in diesem Fall das Routing einrichten? Ich denke, idealerweise sollte jede gegebene URL über index.php routen, das dann irgendwie entscheidet, welche Vorlage zu rendern ist (dh. / Category / pagename würde zu templates / category / pagename.tpl zugeordnet werden).

    
Juho Vepsäläinen 23.05.2011, 10:26
quelle

3 Antworten

10

Verwenden Sie mod_rewrite , um alles auf eine einzelne index.php -Datei zu routen. Überprüfen Sie dann die Variable in $_SERVER['REQUEST_URI'] in dieser Datei, um sie an den erforderlichen Handler zu senden.

Diese Konfiguration aktiviert mod_rewrite , falls installiert:

%Vor%     
troelskn 23.05.2011, 10:28
quelle
2

Wie trolskn (+1) beschreibt:

  

Verwenden Sie mod_rewrite , um alles auf eine einzelne index.php -Datei zu routen. Überprüfen Sie dann die Variable in $_SERVER['REQUEST_URI'] in dieser Datei, um sie an den erforderlichen Handler zu senden.

Aber ich fand das folgende .htaccess (in den Ordner mit dem index.php gestellt, das alles danach "konsumieren" sollte) viel hilfreicher:

%Vor%

Ich möchte auch darauf hinweisen, dass Sie möglicherweise auf die Nachricht

stoßen %Vor%

Dies kann leicht mit sudo a2enmod rewrite && sudo service apache2 restart ( Quelle )

gelöst werden     
Martin Thoma 22.05.2015 16:47
quelle
1

Vielleicht möchten Sie PEARs Net_URL_Mapper verwenden.

    
cweiske 23.05.2011 17:53
quelle