mean1312
Goto Top

Htaccess RewriteRule greift nicht

Hallo zusammen,

ich habe einige Tutorials durchgelesen, aber irgendwie bekomme ich es nicht hin, meine konkrete RewriteRule umzusetzen (die in den Beispielen funktionierten immer, waren vom Aufbau her aber auch "anders" als bei mir).

Und zwar habe ich in meinem web-Ordner einen Ordner mitglieder, darin eine kleine Oberfläche für eingeloggte Mitglieder. Wenn eines der Mitglieder auf den "Kontakt"-Link klickt möchte ich es jedoch nicht auf ein Kontakt-Formular innerhalb des Mitgliederbereich weiterleiten, sondern auf die allgemeine Kontaktseite im web-Ordner (untetr web/impressum/kontakt.php). Das Menü in dem Mitgliederbereich wird automatisch aufgebaut und ich habe nur bedingt Einfluss darauf, weshalb ich das die beste Möglichkeit fände über .htaccess zu machen,

Ich müsste also in der .htaccess-Datei die in web/mitglieder liegt eine RewriteRule anlegen, die

member?state=contact

auf

/impressum/kontakt.php

umleitet.

Hierfür habe ich u.a. das hier probiert:

RewriteRule ^member.php/?state=kontakt /impressum/kontakt.php [R=301,L]

Das greift aber gar nicht.Escape ich das "?" irgendwie falsch oder wo liegt denn bitte genau mein Fehler?

Für Hilfe wäre ich sehr dankbar.

Vielen Dank und viele Grüße,

Dirk

Content-ID: 277067

Url: https://administrator.de/contentid/277067

Ausgedruckt am: 23.11.2024 um 19:11 Uhr

114757
Lösung 114757 11.07.2015 aktualisiert um 15:09:25 Uhr
Goto Top
Moin,
Das greift aber gar nicht.Escape ich das "?" irgendwie falsch oder wo liegt denn bitte genau mein Fehler?
das auch, aber dein Fehler liegt hier darin das bei RewriteRule nur der Pfad ohne Querystring(alles ab dem Fragezeichen) ausgewertet wird! Diesen prüfst du stattdessen mit RewriteCond.

Das hier sollte funktionieren
RewriteEngine On
RewriteCond %{QUERY_STRING} ^state=kontakt$
RewriteRule ^member\.php$ /impressum/kontakt.php [R=301,QSD,L]
Einfach mal die Doku lesen, und schon bist du schlauer ...
http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule

Gruß jodel32
Mean1312
Mean1312 11.07.2015 um 15:09:19 Uhr
Goto Top
Sehr cool, vielen Dank! Die Seite habe ich mir angeschaut, um noch etwas mehr zu verstehen. Die QSB-Anweisung konnte ich übrigens nirgends finden (weder auf der Seite, noch über eine Suchmaschine). Wenn ich sie weglasse funktioniert aber alles, wenn sie drin ist kommt ein 500er Fehler.
114757
114757 11.07.2015 aktualisiert um 15:27:43 Uhr
Goto Top
Die QSB-Anweisung konnte ich übrigens nirgends finden
QSD = QueryString Discard !!
Steht ebenfalls auf der verlinkten Seite.

Dieser Flag geht erst ab Apache 2.4.0


This flag is available in version 2.4.0 and later.
Mean1312
Mean1312 12.07.2015 um 20:09:30 Uhr
Goto Top
Boah, bin ich doof! Warum auch immer habe ich immer nach QSB gesucht, nicht QSD. Kein Wunder, dass ich dazu nichts gefunden habe. Sorry!

This flag is available in version 2.4.0 and later.
-> Das erklärt auch, warum es bei mir nicht ging... ;)