Apache2 mit mod_rewrite

Hallo,

hinter einem Webserver gibt es einen (von aussen) nicht erreichbaren switch mit einem tollen Management-Webfrontend. Um es trotzdem bedienen zu koennen wollte ich mit mod_proxy.c das Web-Verzeichnis /switch/ auf den Switch umleiten:

ProxyPass /switch/ http://192.168.0.100/

Funktioniert soweit ganz gut, die index.html wird schon mal angezeigt. Leider haben die Webdesigner jede Menge Bilder und Links absolut eingebaut, also statt img/bild.jpg oder html/index.html immer /img/bild.jpg bzw. /html/index.html, was natuerlich nicht gefunden wird. Also, mod_rewrite.c gleich noch nachschieben, wenn im HTTP_REFERER ein /switch/ auftaucht soll die URL mit /switch/ anfangen:

RewriteEngine On
RewriteCond %{HTTP\_REFERER} ^http://[^/]+/switch/
RewriteRule (.\*) /switch/\1 [L]

Geht natuerlich gar nicht. Das access.log mault munter

192.168.1.123 - - [04/Dec/2006:23:51:37 +0100] "GET /img/bild.jpg HTTP/1.0" **404** 322 "http://192.168.1.1/switch/" "Browerzeugs"

an. Warum? Was ist daran falsch?

Danke im Voraus,
Gruss vom Frank.

Hallo,

RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://[^/]+/switch/
RewriteRule (.*) /switch/\1 [L]

RewriteRule ^(.*)$ /switch/$1 [L]

Wäre mein Schuss ins Blaue.
Aber spricht denn was dagegen einen eigenen Virtual Host dafür aufzumachen? Dann kannst du dir den ganzen Unfug sparen :wink:

Grüße,
Moritz

Hallo,

> > RewriteEngine On  
> > RewriteCond %{HTTP\_REFERER} ^http://[^/]+/switch/  
> > RewriteRule (.\*) /switch/\1 [L]

RewriteRule ^(.*)$ /switch/$1 [L]

Ah richtig, $1, nicht sed-style \1… geht trotzdem nicht.

Aber spricht denn was dagegen einen eigenen Virtual Host dafür
aufzumachen?

Oehm… das kapier ich jetzt nicht. Ach, warte, doch, dort ein ProxyPass * http://192.168.0.100/, oder? Nein, das ist nicht so toll, brauch ich noch 'nen DNS-Eintrag, fetzt nicht.

Gruss vom Frank.

Hallo,

RewriteRule ^(.*)$ /switch/$1 [L]

Ah richtig, $1, nicht sed-style \1… geht trotzdem nicht.

Ist das in einer .htaccess? Wenn ja, darf am Anfang kein / stehen. Wenn nein brauchst du eventuell noch ein RewriteBase. Ansonsten empfehle ich, eine RewriteLog-Datei zu definieren und RewriteLogLevel 3 oder 4 oder so :wink:.

Aber spricht denn was dagegen einen eigenen Virtual Host dafür
aufzumachen?

Oehm… das kapier ich jetzt nicht. Ach, warte, doch, dort
ein ProxyPass * http://192.168.0.100/, oder? Nein, das
ist nicht so toll, brauch ich noch 'nen DNS-Eintrag, fetzt
nicht.

Ähm, ein * ist ein glob :wink:
Eher ProxyPass / http://192.168.0.100/

Ich glaube aber, dass du dir mod_rewrite sparen kannst, wenn du ProxyPassReverse benutzt:
http://httpd.apache.org/docs/2.0/mod/mod_proxy.html#…

Klappt das?

Grüße,
Moritz