mod_rewrite / RegEx Problem
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ahnung
anfang
aufrufen
code
datei
dateiname
datenbank
eckigen klammern
frage
gleichen ziel
jemand
machen
problem
rolle
sagen
show
stoppen
string
url
verneinung
-
Hallo.
Bitte entschuldigt den undeutlichen Titel, aber mir fiel kein besserer ein für mein Problem.
Also:
Ich lasse anhand einer ID eine Datei aus der Datenbank suchen und anzeigen.
Das Script heißt etwa so: show.php?id=XXXX
Um das Ganze nun etwas aufzuhübschen benutze ich mod_rewrite, dann wird daraus so etwas hier:
RewriteRule show/(.*)$ /show.php?id=$1
Das klappt auch wunderbar.
Nun möchte ich aber, dass man die URL mit einem Dateinamen aufrufen kann.
Also z.b. show/12345/datei.html etc.
Der Dateiname spielt dabei allerdings keine Rolle und dient nur der Übersicht.
Ich weiß dass man das irgendwie mit RegEx lösen kann, allerdings habe ich davon überhaupt keine Ahnung.
Hat vielleicht jemand den passenden RegEx-Code für mich?
Danke im Voraus. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo,
ich weiß nicht, ob ich deine Frage richtig verstanden habe, aber hier mal meine Idee.
RewriteRule show/(.*)/datei.html$ /show.php?id=$1
Das kannst du machen, wenn alle dateien bei dir datei.html heißen sollen. Dann musst du aber auch alle Links manuell ändern also
oder so ähnlich.<a href="show/54893/datei.html">Link</a>
Wenn die datei.html auch mal anders heißen soll, machst du es so:
RewriteRule show/(.*)/(.*)$ /show.php?id=$1
Dann kann der dateiname in der url angegeben werden oder nicht, also entwerder
odershow/89340/
führen zum gleichen Ziel.show/89435/datei.html
Dann kommt es auf den Link an, den du auf eine HTML-Seite zur entsprechenden Seite setzt.
Schöne Grüße
mmc
Beitrag zuletzt geändert: 2.2.2011 20:20:04 von mmc -
Wenn die datei.html auch mal anders heißen soll, machst du es so:
RewriteRule show/(.*)/(.*)$ /show.php?id=$1
Dann kann der dateiname in der url angegeben werden oder nicht, also entwerder
odershow/89340/
führen zum gleichen Ziel.show/89435/datei.html
So habe ich es schon probiert, aber dann wird das Ganze als ID genommen, also 12345/datei.html anstatt nur 12345.
Ich denke man müsste dem Regex irgendwie sagen dass er beim Schrägstrich stoppen soll, aber ich habe leider keine Ahnung wie man das macht. -
Ungetestet, sollte aber hinhauen:
oder, wenn du den Dateinamen immer mit angibst, könnte man es auch so versuchen:RewriteRule show/([^/]+) /show.php?id=$1
RewriteRule show/([^/]+)/.*$ /show.php?id=$1
Erläuterung: während ^ normal für den Anfang des Strings steht, ist es in den eckigen Klammern eine "Verneinung" für alle folgenden Zeichen. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage