Mod_Rewrite Problem

Peter Schneider

Legendäres Mitglied
Hallo Zusammen. Mal wieder ein kleines Mod_Rewrite-Problem.
Ich taste mich langsam ran, schaffe es aber noch nicht, lauffähige Rules zu entwickeln
wink.gif


Folgendes: Wir haben in einem alten Projekt einen "Frame-Reloader" drin.
Die URLs sehen so aus:
QUOTE http://www.meineseite.de/frames.htm?http://www.meineseite.de/ordner/thema.htm


Das Gefährliche ist, dass

QUOTE http://www.meineseite.de/frames.htm?http://www.deineseite.de

als potentielle Sicherheitslücke noch geschlossen werden muss!

Der Framereloader wird nicht mehr benötigt:

QUOTE http://www.meineseite.de/frames.htm?http://www.meineseite.de/ordner/thema.htm

muss mittels 301 umgeleitet werden, da viele EXTERNE Links so angelegt wurden, zu

QUOTE http://www.meineseite.de/ordner/thema.htm


Um das Sicherheitsproblem zu umgehen, habe ich die Rule ein wenig länger angelegt:

QUOTE RewriteRule ^frames\.htm\?http://www\.meineseite\.de/(.*)$ http://www.meineseite.de/$1 [R=301,L]

Also es wird nur umgeleitet, wenn definitiv hinter dem "?" noch "meineseite.de" steht.

Na ja, das funktioniert so aber nicht...
An welchem Detail liegt das nun?
 
Das Problem ist der Query String.

Probier mal:

CODE
RewriteCond %{QUERY_STRING} http://www.meineseite.de/(.*)
RewriteRule ^frames\.html$ /%1 [R=301,L]



Ungetestet: Vermutlich muss daran noch etwas weiter gefeilt werden, also poste bitte kurz, was passiert oder ob Fehlermeldungen auftauchen (welche?), damit wir den Code noch etwas ausfeilen können. Eventuell kann passieren, dass der Query String weiterhin hinten angehängt wird, dann müssten wir das noch unterbinden.
 
Hallo!

Wird sind auf dem Weg!
Es wird die richtige Seite angezeigt, aber die angezeigte URL im Browser ist noch ein wenig lang:

QUOTE http://www.meineseite.de/ordner/?http://www.meineseite.de/ordner/

anstelle von

QUOTE http://www.meineseite.de/order/


Zur Lücke:

QUOTE http://www.meineseite.de/frames.htm?http://www.andereseite.de

verbleibt bei mir auf der Frames-Seite, was so gewollt ist. Das wird anderweitig gelöst...
 
Das hatte ich vermutet.

Dann probier mal:

CODE
RewriteCond %{QUERY_STRING} http://www.meineseite.de/(.*)
RewriteRule ^frames\.html$ /%1? [R=301,L]



frames.html?http://www.meineseite wird leider gerade oben noch nicht erfasst, aber anscheinend hast Du dies selber gelöst, ansonsten probier mal


CODE
RewriteCond %{QUERY_STRING} http://www.meineseite.de [OR]
RewriteCond %{QUERY_STRING} http://www.meineseite.de/(.*)
RewriteRule ^frames\.html$ /%1? [R=301,L]



 
Hallo!

Es bleibt beim alten!

QUOTE http://www.meineseite.de/frames.htm?http://www.meineseite.de

wird korrekt umgeleitet
aber
QUOTE http://www.meineseite.frames.htm?http://meineseite.de/ordner/seite.htm
führt zum bekannten Bild.

Ich habe in der htaccess übrigens schon die folgenden Rules:


QUOTE
RewriteCond %{HTTP_HOST} ^meineseite\.de$ [NC]
RewriteRule ^(.*)$ http://www.meineseite.de/$1 [R=301,L]
RewriteRule ^Unterordner/(.*)$ http://www.meineseite.de/ordner/$1 [R=301,L]



Ich denke, dadurch kann ich auf das [OR] verzichtet bzw. würde sich ein Problem erklären?
 
Alternative:
könnten wir in frames.htm das ganze mittels PHP lösen? (PHP in htm wäre schon möglich).
Also String einlesen und dann nach Gusto weiterleiten...
 
Hallo Peter,

klar könnten wir das auch über php klären, es ist aber auch über mod_rewrite machbar.

Hast Du bemerkt, dass ich bei dem zweiten Versuch in der RewriteRule-Anweisung ein ? eingefügt habe (hinter %1)?

Damit unterdrückt man eigentlich die Weitergabe des Querystrings.

Falls Du das ? nicht eingefügt hattest, probier es nochmal:

CODE
RewriteCond %{HTTP_HOST} ^meineseite\.de$ [NC]
RewriteRule ^(.*)$ http://www.meineseite.de/$1 [R=301,L]
RewriteRule ^Unterordner/(.*)$ http://www.meineseite.de/ordner/$1 [R=301,L]
RewriteCond %{QUERY_STRING} ^http://www.meineseite.de$
RewriteRule ^frames\.html$ /? [R=301,L]
RewriteCond %{QUERY_STRING} ^http://www.meineseite.de/(.*)$
RewriteRule ^frames\.html$ /%1? [R=301,L]



Viele Grüße

Christian
 
Hallo!

Danke mal für die bisherige Hilfe!
QUOTE
RewriteCond %{QUERY_STRING} ^http://www.meineseite.de/(.*)$
RewriteRule ^frames\.html$ /%1? [R=301,L]



Geht! Und meiner Ansicht nach geht die Rule schon alleine.
Einzig http://www.meineseite.de/frames.htm?http://www.meineseite.de
wird davon nicht erfasst, was allerdings egal ist...

Super! Danke vielmals!

Ob ich jetzt benebelt bin, kann ich nicht eruieren. Ich habe da eigentlich schon immer brav mit copy+paste gearbeitet...
Mir schwant aber böses mit dem "Firefox"-Browser... Dass da vielleicht was gecached wurde....
biggrin.gif


Grüsse

Peter
 
Zurück
Oben