mode_rewrite
docmandy
- webserver
0 Sönke Tesch0 docmandy
Hallo,
es wäre nett wenn mir einer mal erklären könnte wie man folgendes erreicht: (wie der syntax ausehen muss...)
Ich möchte mittels mode_rewrite beim Apache-Server erreichen das bei verschiedenen url's wie z.B.
heinz.php?test=1&haus=1
dieter.php?test=3&fenster=5
das ? und die angehängten variablen immer entfernt werden, also nur noch heinz.php.........
Danke !
Ich möchte mittels mode_rewrite beim Apache-Server erreichen das bei verschiedenen url's wie z.B.
heinz.php?test=1&haus=1
dieter.php?test=3&fenster=5das ? und die angehängten variablen immer entfernt werden, also nur noch heinz.php.........
Und dann? Der Benutzer gibt Daten an, die Du einfach wegschmeißt? Warum machst Du das? Wenn sie nicht gebraucht werden, warum kümmerst Du Dich überhaupt darum? Wenn sie gebraucht werden, warum willst Du sie wegwerfen bzw. wo sollen sie hin?
Gruß,
soenk.e
Und dann? Der Benutzer gibt Daten an, die Du einfach wegschmeißt? Warum machst Du das? Wenn sie nicht gebraucht werden, warum kümmerst Du Dich überhaupt darum? Wenn sie gebraucht werden, warum willst Du sie wegwerfen bzw. wo sollen sie hin?
Wieso wegschmeisen ? Die Daten werden, wenn ich das richtig verstanden hab serwohl übermittelt (z.B. an ein script..), lediglich die URL wird umgeschieben - Oder hab ich da was falsch verstanden ? Das ganze dient ja lediglich dazu (unter anderem) keine Problem mit diverse Suchmaschienen zu bekommen die dynam. Seiten ja teilweise ganz ignorieren, bzw nicht weiter verfolgen wenn sie sowas wie ein ? oder ein & finden...........
Docmandy
Und dann? Der Benutzer gibt Daten an, die Du einfach wegschmeißt? Warum machst Du das? Wenn sie nicht gebraucht werden, warum kümmerst Du Dich überhaupt darum? Wenn sie gebraucht werden, warum willst Du sie wegwerfen bzw. wo sollen sie hin?
Wieso wegschmeisen ? Die Daten werden, wenn ich das richtig verstanden hab serwohl übermittelt (z.B. an ein script..), lediglich die URL wird umgeschieben - Oder hab ich da was falsch verstanden ?
Die URL wird umgeschrieben, um damit zu arbeiten, nicht der Schönheit wegen (zumindest nicht primär:). Dementsprechend ist nach dem Umschreiben die alte URL nicht mehr relevant. Wenn Du aus "urmel.php?test=1" "urmel.php" machst, wird auch nur "urmel.php" benutzt.
In Deinem Fall hast Du noch ein zweites Funktionsproblem: URLs werden vom im Server umgeschrieben. Umgeschrieben werden nicht einfach aus dem Nichts auftauchende URLs, sondern echte Anfragen, d.h. bevor da überhaupt etwas umgeschrieben wird, muß erstmal jemand (Browser, Suchmaschine, Onkel Hotte) eine Anfrage an den Server gestellt haben - mit der umzuschreibenden URL.
Und da beißt sich die Katze in den Schwanz: Du willst verhindern, daß Suchmaschinen eine Fragezeichen-URL zu sehen bekommen, mußt dazu aber erstmal die Suchmaschine dazu bringen, eine Fragezeichen-URL an den Server zu schicken, damit der daraus eine Ohne-Fragezeichen-URL bastelt.
Und last but not least:
Je nach Vorgehensweise tauchen umgeschriebene URLs entweder gar nicht in der Öffentlichkeit auf, da sie normalerweise nur intern im Webserver verarbeitet werden, oder aber Du mußt eine explizite Weiterleitung rausschicken. Ob sich Suchmaschinen über die Feststellung freuen, daß keine ihrer gesammelten URLs mehr existiert, (weil alle in einer Weiterleitung enden) weiß ich nicht. In jedem Fall verdopplest Du aber die Netzlast Deiner Seiten, weil für jede einzelne Seite zwei Anfragen gesendet werden müssen. Das ist nicht nur unschön für die Allgemeinheit, die Deinen unnötigen Verkehr bezahlen muß, sondern auch für Deine Nutzer, die etwas länger auf Seiten warten müssen.
Die Sache mit dem Fragezeichen war übrigens nur für Benutzereingaben gedacht, bestes Beispiel dafür sind Suchmaschinen selbst, deren Ergebnisseiten unter Adressen wie "/query.cgi?q=blabla" auftauchen. Aus diesem Grund werden Fragezeichen-URLs nur äußerst ungern aufgenommen - denn was soll die Allgemeinheit mit einer Seite, die (dem Aussehen der URL nach) nur für die Anfrage eines einzelnen Benutzers erstellt wurde?
Die gute Nachricht: Für Dein Problem gibt es eine nette, einfache Lösung namens PATH_INFO.
Rufst Du eine URL urmel.php/emma/lukas auf und bei urmel.php handelt es sich nicht um ein Verzeichnis sondern um ein Skript, dann wird dieses Skript mit einem Parameter namens PATH_INFO aufgerufen. Der Inhalt von PATH_INFO ist der Rest, der hinter dem Skriptnamen kommt, hier also "emma/lukas".
Auf diese Art und Weise kannst Du eine wunderschöne, virtuelle Verzeichnisstruktur aufbauen, an der sich zum einen keine Suchmaschine stört und zum zweiten Deinen Nutzern hilft, sich besser zu orientieren: Oder kannst Du Dir "urmel.php?bla=1&tralala=5747&hoppla=ups" besser merken als "urmel.php/emma/lukas"?
In PHP erscheint PATH_INFO als $_SERVER["PATH_INFO"] (alte PHP-Versionen: $HTTP_SERVER_VARS["PATH_INFO"].
Gruß,
soenk.e