Seite 1 von 1

Dateiname mit mod_rewrite aufsplitten?

Verfasst: 05.05.2009, 12:14
von dahead
Hallo zusammen,

folgende Frage:

kann man mit mod_rewrite einen URI wie z.B. www.example.org/kategorie-produkt.html in sowas umwandeln >> www.example.org/kategorie/produkt.html

Konnte bisher nichts darüber finden.

MfG

Verfasst:
von

Re: Dateiname mit mod_rewrite aufsplitten?

Verfasst: 05.05.2009, 12:47
von Mork vom Ork
dahead hat geschrieben:kann man mit mod_rewrite einen URI wie z.B. www.example.org/kategorie-produkt.html in sowas umwandeln >> www.example.org/kategorie/produkt.html
Ja.

Du möchtest jetzt aber nicht auch noch wissen, wie, oder? ;)

Verfasst: 05.05.2009, 12:48
von dahead
wäre schon super ;)

Verfasst: 05.05.2009, 12:49
von net(t)worker
klar geht das, aber eben nur beim Aufruf einer url, nicht auf der webseite selber....

Verfasst: 05.05.2009, 14:58
von Mork vom Ork
dahead hat geschrieben:wäre schon super ;)
Ochnöö ;)

Mal angenommen, du möchtest externe Weiterleitungen haben und alle betreffenden Pfade entsprechen deinem Muster Schrägstrich_am_Anfang-buchstaben-bindestrich-buchstaben-.html, aber keine anderen: RedirectMatch permanent ^(/[a-z]+)-([a-z]+)\.html$ $1/$2.html - mod_rewrite bräuchtest du dann nicht, Redirect soll etwas leichtfüßiger sein.

Stellt sich jetzt die Frage, ob es das ist, was du willst.
- Gibt es noch andere Pfade, die diesem Muster entsprechen, aber nicht umgeleitet werden sollen? Dann musst du das Problem genauer beschreiben.
- Möchtest du gar nicht extern umleiten, sondern unsichtbar, serverintern den Pfad umbiegen? Dann kannst du zwar das Muster fast 1:1 übernehmen, musst aber doch zu mod_rewrite bzw. RewriteRule greifen.
- Möchtest du nicht a-b.html im Browser aufrufen und a/b.html geliefert bekommen, sondern umgekehrt a/b.html aufrufen und a-b.html geliefert bekommen? Dann müssen entsprechend in Muster und Ziel Binde- und Schrägstrich ausgetauscht werden.

Verfasst: 05.05.2009, 16:32
von dahead
Danke für deine Antwort Mork.

Code: Alles auswählen

RewriteRule ^(/[a-z]+)/([a-z]+)\.php$ $1-$2.php
Das hab ich aus deinem Post abgeleitet, aber das funktioniert nicht. Bekomme nen Error 500 Internal server error

Verfasst: 05.05.2009, 19:26
von Mork vom Ork
dahead hat geschrieben:

Code: Alles auswählen

RewriteRule ^(/[a-z]+)/([a-z]+)\.php$ $1-$2.php
Das hab ich aus deinem Post abgeleitet, aber das funktioniert nicht. Bekomme nen Error 500 Internal server error
Den Grund für solche Fehler findest du im Fehlerprotokoll deines Servers (dein Hoster sagt dir, wo du es findest).

Die Zeile an sich hast du korrekt zusammengesetzt. Allerdings muss der erste Schrägstrich im Muster raus (das meinte ich mit „fast 1:1 übernehmen“), da RewriteRule in der .htaccess relativ zum jeweiligen Verzeichnis arbeitet, Redirect hingegen nimmt immer den ganzen Pfad.
Das ist aber wie schon angedeutet nicht der Grund für den 500er. Entweder hast du dich vertippt oder die Zeile kollidiert mit anderen Anweisungen in deiner .htaccess -> Fehlerprotokoll sagt genaueres.