PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Apache] Redirect ?



verve
23.05.04, 12:39
Hi@all,

wenn ich in meinem vhost mittels redirect eine weiterleitung einrichte und man diese aufruft zeigt er immer die URL der weiterleitung an!
Kann man das irgendwie ändern?

Ich habe folgenden Eintrag:

[...]
servername sub.domain.de
Redirect 301 / http://meine-ip
[...]

ich habe es auch so probiert:

[...]
servername sub2.domain.de
RewriteEngine On
RewriteRule /.* http://meine-IP/ [R]
[...]

Doch bei beiden wird im browser direkt weitergeleitet und man Sieht dann die IP !
Außerdem kann man ebenso keine unterordner benutzen. Also z.B. http://meine-IP/unterordner kann man nicht mittels http://sub.domain.de/unterordner aufrufen.

Hat da evt. jemand noch eine idee?

greetings
verve

Svenny
23.05.04, 12:41
nimm mal statt R nen P im rewrite

verve
23.05.04, 12:50
hi!

danke für deinen tipp, es funktioniert auch ... nur irgendwie ... komisch :)
Er zeigt nur die index datei an. Egal wie man die URL erweitert, man landet immer wieder auf der index-Seite.
Könnte man das evt. noch ändern ;)

Pingu
23.05.04, 14:26
danke für deinen tipp, es funktioniert auch ... nur irgendwie ... komisch :)
Er zeigt nur die index datei an. Egal wie man die URL erweitert, man landet immer wieder auf der index-Seite.
Könnte man das evt. noch ändern ;)
Ich finde es nicht komisch und natürlich kann man.

Nehmen wir einmal das Manual zur Hand: http://httpd.apache.org/docs/mod/mod_rewrite.html#RewriteRule

Was machst Du?

RewriteRule /.* http://meine-IP/ [P]
Erstens das Flag P kannst Du ganz weglassen, wenn alles auf dem selben Rechner passiert. Durch möchtest sicherlich keinen Proxy-Rewrite machen. Wenn es auf einen anderen Rechner gehen soll, dann ist das Flag P nwiederum sehr wichtig (siehe Manual - ist dort sehr schon an Beispielen erklärt).

Also kommen wir zu der Form:

RewriteRule /.* http://meine-IP/

Was macht das? Er soll alle URLs, die einen "/" haben (der "." steht ja für jedes beliebige Zeichen und der "*" heißt nur, daß das vorangegangene Zeichen keinmal oder mehrmals vorkommen darf) intern umgeschrieben werden sollen auf genau den Ausdruck der dahinter steht, also auf "http://meine-IP/". Genau das macht er auch. Du willst aber, daß nur der Host umgeschrieben werden soll? Dann mußt Du Ihm, dem Indianer, das auch sagen:

RewriteRule /(.*) http://meine-IP/$1
Das heißt jetzt, alles nach einem "/" soll er sich merken (das alles in den Klammern) und in seiner ersten internen Variable speichern. Das ganz soll dann auf genau den Ausdruck dahinter umgeschrieben werden also: "http://meine-IP/" wobei das "$1" sagt, daß dorthin genau der Inhalt aus der ersten internen Variablen geschrieben werden soll. Das wäre also schon einmal ein guter Ansatz. Wahrscheinlich wird es auch funktionieren, da die Regex beim Apachen im Modus greedy arbeitet. Wenn er nicht greedy arbeitet muß es nicht umbedingt funktionieren. Dafür wäre es sinnvoll dem Indianer noch mitzuteilen, daß der "/", der genau am Anfang steht gemeint ist und nicht irgend eine "/" in der URL. Also wäre folgender Ausdruck sinnvoller bzw. eindeutiger:

RewriteRule ^/(.*) http://meine-IP/$1
oder eben wenn es auf einen anderen Rechner verweisen soll und dieser nur als Proxy arbeiten soll:

RewriteRule ^/(.*) http://meine-IP/$1 [P]

Das wäre es dann. Übrigens im Manual zum Indianer ist dies alles sehr schön anhand von Beispielen erklärt.

Pingu