Felix Riesterer: loop verhindern bei redirect-rewrite-kombination

Beitrag lesen

Lieber seth_not@home,

RedirectMatch ^/bar(|/.*)$         /foo/bar$1

da wird für den Client (Browser) kein Redirect zur neuen URL gefordert. Laut Dokumentation fehlt da ein [R] dahinter. Sonst versucht nur der Server die alte Adresse intern als neue zu verstehen, die dann in der nächsten Zeile wieder zurückmodifiziert wird - und Du hast Deine von Dir beschriebene Schleife.

Du müsstest also durch eine passende RewriteCondition dafür sorgen, dass der Request nach der Zeile fertig beantwortet ist.

RewriteCond %{REQUEST_URI} ^/bar/.*$  
RewriteRule ^(/bar.*) /foo$1               [R]  
  
RewriteCond %{REQUEST_URI} ^/foo/bar/.*$  
RewriteRule ^/foo(/bar.*) ^$1

Obiger Code ist ungetestet, könnte aber aus Versehen so passen.

Liebe Grüße,

Felix Riesterer.

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