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-Key: 277067

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

Printed on: April 24, 2024 at 03:04 o'clock

Mitglied: 114757
Solution 114757 Jul 11, 2015 updated at 13:09:25 (UTC)
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
Member: Mean1312
Mean1312 Jul 11, 2015 at 13:09:19 (UTC)
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.
Mitglied: 114757
114757 Jul 11, 2015 updated at 13:27:43 (UTC)
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.
Member: Mean1312
Mean1312 Jul 12, 2015 at 18:09:30 (UTC)
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... ;)