Rewrite-Frage
VFLFan
- webserver
Hallo,
mit untenstehender .htaccess wollte ich folgendes erreichen:
Aufruf www.foo.com/ wird umgeleitet zu www.bar.com/foo
Aufruf www.foo.com/a12345 wird umgeleitet zu www.bar.com/foo?a12345
Der zweite Aufruf wird korrekt umgeleitet, beim ersten fehlt allerdings das foo!
Woran liegt dies?
Mit dem redirekt-log komme ich leider auch nicht zurecht.
.htaccess:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www)?.(.*).de [NC]
RewriteRule ^(.+)$ http://www.beinahe-gratis.de/%2?$1 [L]
RewriteRule ^$ http://www.beinahe-gratis.de/%2 [L]
Log-Auszüge:
Aufruf www.foo.com/a12345
[www.foo.com/sid#1032770][rid#1109dc8/initial] (3) strip per-dir prefix: E:/homepages/foo/a12345 -> a12345
[www.foo.com/sid#1032770][rid#1109dc8/initial] (3) applying pattern '^(.+)$' to uri 'a12345'
[www.foo.com/sid#1032770][rid#1109dc8/initial] (4) RewriteCond: input='www.foo.com' pattern='^(www)?.(.*).de' [NC] => matched
[www.foo.com/sid#1032770][rid#1109dc8/initial] (2) rewrite 'a12345' -> 'http://www.bar.com/foo?a12345'
[www.foo.com/sid#1032770][rid#1109dc8/initial] (3) split uri=http://www.bar.com/foo?a12345 -> uri=http://www.bar.com/foo, args=a12345
[www.foo.com/sid#1032770][rid#1109dc8/initial] (2) implicitly forcing redirect (rc=302) with http://www.bar.com/foo
[www.foo.com/sid#1032770][rid#1109dc8/initial] (1) escaping http://www.bar.com/foo for redirect
[www.foo.com/sid#1032770][rid#1109dc8/initial] (1) redirect to http://www.bar.com/foo?a12345 [REDIRECT/302]
Aufruf www.foo.com
[www.foo.com/sid#1032770][rid#1109e38/initial] (3) strip per-dir prefix: E:/homepages/foo/ ->
[www.foo.com/sid#1032770][rid#1109e38/initial] (3) applying pattern '^(.+)$' to uri ''
[www.foo.com/sid#1032770][rid#1109e38/initial] (3) strip per-dir prefix: E:/homepages/foo/ ->
[www.foo.com/sid#1032770][rid#1109e38/initial] (3) applying pattern '^$' to uri ''
[www.foo.com/sid#1032770][rid#1109e38/initial] (2) rewrite '' -> 'http://www.bar.com/'
[www.foo.com/sid#1032770][rid#1109e38/initial] (2) implicitly forcing redirect (rc=302) with http://www.bar.com/
[www.foo.com/sid#1032770][rid#1109e38/initial] (1) escaping http://www.bar.com/ for redirect
[www.foo.com/sid#1032770][rid#1109e38/initial] (1) redirect to http://www.bar.com/ [REDIRECT/302]
[www.bar.com/sid#fca6a0][rid#1122fb0/initial] (3) [perdir E:/homepages/bar/] strip per-dir prefix: E:/homepages/bar/ ->
RewriteRule ^(.+)$ http://www.beinahe-gratis.de/%2?$1 [L]
RewriteRule ^$ http://www.beinahe-gratis.de/%2 [L]
Hier muss es natürlich statt beinahe-gratis.de heissen foo.com!
Hi,
Der zweite Aufruf wird korrekt umgeleitet, beim ersten fehlt allerdings das foo!
Woran liegt dies?
Daran, dass die RewriteCond gar nicht ausgewertet wird -
Mit dem redirekt-log komme ich leider auch nicht zurecht.
MfG ChrisB
Hallo ChrisB,
gilt die rewriteCond nicht für alle folgenden Rewrite-Statements?
Gruß
VFLFan
gilt die rewriteCond nicht für alle folgenden Rewrite-Statements?
Nein, da die Reihenfolge des Processing, auch im Logauszug zu sehen, immer Rule-pattern --> Conditions dieser Regel (sprich die unmittelbar darüber) --> Rule-Substitution ist.