Mailinglisten-Archive |
Hi, On Tue, May 08, 2007 at 10:00:59AM +0200, LB BL wrote: > danke für deine antworten. > > also habe ich richtig verstanden, dass ja deiner meinung nach auch > auf jeden fall ein script notwendig ist, welches die requests durch > aufruf eines entspr. php-scripts (hier: prod_parser.php) von > apache-mod-rewrite überprüft. Jein, du kannst es wie in deiner 1. Mail beschrieben ueber eine RewriteMap machen. Dann brauchst du kein Script. musst aber "irgendwie" die Map pflegen. Meine Vorschlaege basieren darauf, dass Mapping zwischen www.domain.de/products/produktAbkuerzungAusDB/produktNameAusDB.html und www.domain.de/index.php?id=1234 nicht in den Rewrites sondern in einem PHP-Script zu machen. > dabei verwendest du jedoch nicht die rewriteMap Direktive, sondern > leitest auf ein php script? aber wie soll das funzen ohne dass das > so aufgerufene php-script einen neuen http-request sendet um auf die > richtige seite weiterzuleiten und damit die echte url sichtbar im > browser wird? oder hab ich was falsch interpretiert... Der Apache mit der RewriteRule ist hier ein Proxy. D.h. du machst keine Umleitung, sondern der Apache/Proxy leitet die Anfrage transparent an das PHP-Script. Dieses sucht anhand der URL den passenden Inhalt und liefert den aus, bzw. zeigt eine Fehlerseite an. Der Client bekommt davon ueberhaupt nichts mit, es sei denn er hat eine URL aufgerufen die dein PHP-Script nicht zuordnen kann und es wird ein 404 gesendet. Stark vereinfachte/schematische Funktion in prod_parser.php --------------------------------schnipp----------------------------- // Angefragte URL auseinander nehmen $URL_PARTS = explode('/', $_SERVER['SCRIPT_NAME']); // ergibt z.B. // Array // ( // [0] => // [1] => products // [2] => produktAbkuerzungAusDB // [3] => produktNameAusDB.html // ) $prod_kuerzel = $URL_PARTS[2]; $prod_name = basename($URL_PARTS[3], '.html'); // Gibt es was passendes in der DB? if (DB_SELECT_WHERE prod_kuerzel= $prod_kuerzel AND prod_name = $prod_name) { // Zeige das Produkt an } else { // Produkt gibt es nicht, Leite z.B. auf 404 um oder gib eine // Fehlerseite aus. } --------------------------------schnapp----------------------------- Natuerlich alles mit sauberer Eingabe-Pruefung, escaping usw. Gruss Jens
php::bar PHP Wiki - Listenarchive