mod_rewrite - Problem
Jörg
- programmiertechnik
Moin,
ich komm mit meinen sehr begrenzten Kenntnissen (und auch Onkel Google) nicht wirklich weiter - mod_rewrite ist nicht wirklich mein Ding...
Ich möchte folgendes:
"http://meine-domain/Katalog/Sprueche" soll zu "http://meine-domain/Katalog/spuch.php"
"http://meine-domain/Katalog/Wert1" soll zu "http://meine-domain/Katalog/such.php?wt=Wert1"
"http://meine-domain/Katalog/Autor" soll zu "http://meine-domain/Katalog/autoren.php"
"http://meine-domain/Katalog/Autor/Max-Muster" soll zu "http://meine-domain/Katalog/autor.php?wt=Max-Muster"
usw...
werden.
Versucht habe ich das ganze im Ansatz mit folgender .htaccess:
RewriteEngine On
RewriteBase /Katalog/
RewriteRule ^Sprueche$ http://meine-domain/Katalog/spruch.php [L]
RewriteRule ^([!Sprueche]*)$ http://meine-domain/Katalog/such.php?wt=$1 [L]
Die htaccess wollte ich dann noch entsprechend erweitern, aber leider funktioniert nur die erste Regel, schon bei de zweiten kommt ein 404 - und das obwohl die "such.php" definitiv da ist.
Ich denke das es einfach meiner Unfähigkeit geschuldet ist und erbitte daher eure Hilfe!
VG Jörg
Hallo,
Ich möchte folgendes:
"http://meine-domain/Katalog/Sprueche" soll zu "http://meine-domain/Katalog/spuch.php" "http://meine-domain/Katalog/Wert1" soll zu "http://meine-domain/Katalog/such.php?wt=Wert1" "http://meine-domain/Katalog/Autor" soll zu "http://meine-domain/Katalog/autoren.php" "http://meine-domain/Katalog/Autor/Max-Muster" soll zu "http://meine-domain/Katalog/autor.php?wt=Max-Muster" usw... werden.
dann ist mod_rewrite wohl tatsächlich der geeignete Ansatz.
RewriteEngine On
> RewriteBase /Katalog/
> RewriteRule ^Sprueche$ http://meine-domain/Katalog/spruch.php [L]
> RewriteRule ^([!Sprueche]*)$ http://meine-domain/Katalog/such.php?wt=$1 [L]
Schon die erste RewriteRule ist vermutlich nicht, was du willst. Die erzeugt nämlich einen Redirect, weist also den Browser an, den gesuchten Inhalt unter einer anderen URL anzufragen - mit dem Erfolg, dass die geänderte URL auch so in der Browser-Adresszeile steht. Wenn du serverintern umschreiben willst (und davon gehe ich aus), darfst du als Umleitungsziel keine HTTP-URL angeben. Also wohl eher so:
RewriteRule ^Sprueche$ /Katalog/spruch.php [L]
Bei der zweiten RewriteRule ist das Muster unsinnig. Ist dir bewusst, dass [] in einem RegEx eine Zeichenklasse bedeutet, also "ein beliebiges der in der Klammer stehenden Zeichen"? Was da steht bedeutet also, du suchst beliebig viele Vorkommen eines der Zeichen !, S, p, r, u, e, c oder h. Wieso setzt du überhaupt eckige Klammern hier? Schreib das Ausrufezeichen als Negation vor die runde Klammer.
Die htaccess wollte ich dann noch entsprechend erweitern, aber leider funktioniert nur die erste Regel, schon bei de zweiten kommt ein 404
Ja, kein Wunder.
So long, Martin
PS: Es ist Unfug, URLs oder Apache-Code im Posting-Text als PHP-Code auszuzeichnen.