Zur Navigation

mod_rewrite: Gesamte URL als Query-String anhängen

1 Gast (Gast)

Hallo,

ich habe eine (vermutlich recht einfache) Frage: Ich möchte mit mod_rewrite erreichen, dass alle Aufrufe (unabhängig von Subdomain, Request-URI und Query-String) auf eine php-Datei umgeleitet werden. Allerdings möchte ich dabei die komplette URL (z.B. "http://sub1.example.com/index.php?para1=string1&para2=string2#Kapitel1") als Query-String anhängen, also auf somefile.php?url=[hier die URL] umleiten.
Ich habe zwar schon einiges probiert und auch schon "einfacherere" RewriteRules selbst geschrieben, aber das hier übersteigt meine Kenntnisse.

Ich hoffe, dass jemand hier v.a. bei den Regular Expressions besser durchsteigt als ich und eine Idee hat wie man das Problem lösen könnte ;)

Vielen Dank im Voraus

11.06.2013 16:18

2 Jörg

Du kannst dir URL aus den Variablen %{HTTP_HOST}, %{REQUEST_URI} und %{QUERY_STRING} zusammenbauen. Den Anker "#Kapitel1" wirst du aber nicht anhängen können, weil der Browser diesen nicht an den Webserver übermittelt.

Die Weiterleitung könnte so ausschauen:

RewriteCond %{REQUEST_URI} !somefile\.php
RewriteRule .* http://example.com/somefile.php?url=http://%{HTTP_HOST}%{REQUEST_URI}?%{QUERY_STRING} [R=301]

Die RewriteCond sorgt hierbei dafür, dass somefile.php selbst nicht weitergeleitet wird, um eine Endlosweiterleitung zu verhindern.

11.06.2013 16:39

3 Gast (Gast)

Hallo Jörg,

vielen Dank für die Hilfe, funktioniert perfekt! (Mir ist gerade aufgefallen, dass ich den Anker sowieso nicht brauche)

11.06.2013 17:03

4 Horst_M

Gut, wenn es bei Dir funktioniert, kann jedoch nicht verallgemeinert werden. Kenne zwar nicht viele Hoster, doch mindestens einer davon blockt http:// im QueryString und hatte das auch in einem Rundschreiben vorher angekündigt, da es wohl ab und an von Hackern ausgenutzt wurde, URLs von fremden Seiten an harmlose Eingaben anzuhängen und zu öffnen.

Sicherer ist und bei dem Hoster bleibt mir nichts weiter übrig, erst einmal im QueryString die URL ohne http zu übermitteln, dann zu prüfen und dann erst wieder ein http davorzusetzen.

12.06.2013 14:58 | geändert: 12.06.2013 15:09

5 Forum

Ich habe die folgenden Beiträge von Leon und mir mal in einen eigenen Thread verschoben, da sie mit der Ausgangsfrage nur noch bedingt zu tun haben:

Proxy mit cURL

16.06.2015 16:38 | geändert von Jörg: 16.06.2015 16:40

Beitrag schreiben (als Gast)





[BBCode-Hilfe]