Felix Riesterer: loop verhindern bei redirect-rewrite-kombination

Beitrag lesen

Lieber seth,

http://www.example.com/bar/... [...]
  http://www.example.com/foo/bar/...

es soll also noch ein "/foo" eingeschoben werden. die filestruktur auf dem server soll unangetastet bleiben.

es soll dem Client also der tatsächliche Pfad mit Gewalt vorenthalten werden, intern aber statt des vorgeblichen Pfades tatsächlich benutzt werden.

also dachte ich da an folgende kombination:

* redirect von http://www.example.com/bar/(.*) nach http://www.example.com/foo/bar/$1
* rewrite von http://www.example.com/foo/bar/(.*) nach http://www.example.com/bar/$1

1. Client fragt mit der realen Pfadangabe nach und bekommt erklärt, diese sei falsch, er solle unter Pfad/foo//Datei nachschauen [redirect].

2. Client fragt mit der korrigierten Pfadangabe nach und erhält vom Server eine 200er-Antwort. Intern verwedet der Server eine Rewrite-URL, um die "korrigierte" Pfadangabe korrekt aufzulösen.

RedirectMatch ^/bar(|/.*)$         /foo/bar$1
RewriteRule   ^/foo(/bar(/.*)?)$   $1          [L]

Ist das jetzt geraten oder getestet? Wird hier erstens und zweitens vertauscht, oder warum sehe ich nicht, dass der Client in der ersten Zeile einen Redirect ausgehändigt bekommt?

Liebe Grüße,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)