ubuntuusers.de

.htaccess RewriteCond [OR] Fehler

Status: Ungelöst | Ubuntu-Version: Ubuntu 12.04 (Precise Pangolin)
Antworten |

unsen

Anmeldungsdatum:
2. September 2008

Beiträge: 133

hi,

es sollen ein paar domains über htaccess umgeleitet werden:

1
2
3
4
RewriteCond %{HTTP_HOST} ^(www\.)?domain\-?one\.com [OR]
RewriteCond %{HTTP_HOST} ^(www\.)?domain\-?two\.de [OR]
RewriteCond %{HTTP_HOST} ^(www\.)?domain\-?three\.de
RewriteRule (.*)$ http://newdomain.de/verz1/verz2 [R=301,L]

leider werden jetzt alle domains, die ich hier reinschicke weitergeleitet - auch wenn sie mit keiner der RewiteCond matchen. (mir ist klar, dass ich die drei RewriteConds auch in ein pattern packen könnte - sollte aber so einfacher verwaltbar gemacht werden)

was ist da verkehrt? (siehe auch http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritecond Punkt 3)

unsen

(Themenstarter)

Anmeldungsdatum:
2. September 2008

Beiträge: 133

jetzt bin ich komplett verwirrt: zuerst dachte ich, das sei ein Fehler im apachen. dann hab ich das ganze durch einen htaccess tester laufen lassen: http://htaccess.madewithlove.be/ Der bringt das gleiche komische Ergebnis:

RewriteCond %{HTTP_HOST} ^(www\.)?domain\-?one\.com [OR]
RewriteCond %{HTTP_HOST} ^(www\.)?domain\-?two\.de [OR]
RewriteCond %{HTTP_HOST} ^(www\.)?domain\-?three\.de
RewriteRule (.*)$ http://newdomain.de/verz [R=301,L]

Input: http://domain-four.de

Output: http://newdomain.de/verz

Debug:

1 	  	RewriteCond %{HTTP_HOST} ^(www\.)?domain\-?one\.com [OR] 	This condition was not met but the OR option made it pass
2 	  	RewriteCond %{HTTP_HOST} ^(www\.)?domain\-?two\.de [OR] 	This condition was not met but the OR option made it pass
3 	  	RewriteCond %{HTTP_HOST} ^(www\.)?domain\-?three\.de 	This condition was not met but the previous OR option made it pass
4 	  	RewriteRule (.*)$ http://newdomain.de/verz [R=301,L] 	This rule was met, the new url is http://newdomain.de/verz The tests are stopped, using a different host will cause a redirect

wo hab ich da nen Konten drin!? Zeile 3: Die Bedingung passt nicht aber das vorangegangene or, bei dem die Bedingung auch nicht gepasst hat, macht's passend??

kizu

Avatar von kizu

Anmeldungsdatum:
31. Juli 2009

Beiträge: 677

Wohnort: Buchholz

Hallo unsen,

kenn mich wenig damit aus, aber das ? macht mich stutzig.

apache.org schrieb:

? 0 or 1 occurrences of the preceding text

heißt das nicht, dass keine Vorkommen auch als gültig erkannt werden, dann passt es also auch?

MfG, Daniel

unsen

(Themenstarter)

Anmeldungsdatum:
2. September 2008

Beiträge: 133

kizu schrieb:

.. aber das ? macht mich stutzig.

ok - ich geh mal Schritt für Schritt:

Input:

http://domain-four.de

1. Regel:

RewriteCond %{HTTP_HOST} ^(www\.)?domain\-?one\.com [OR]
  • (www.)? kann Null oder einmal vorkommen - kommt nicht vor also passt's

  • "domain" ist enthalten, das "-" auch einmal - also passt

  • "one" - hier wird's falsch, es kommt ein "four" - also Regel skippen [OR] und nächste

weitere Reglen:

RewriteCond %{HTTP_HOST} ^(www\.)?domain\-?two\.de [OR]
RewriteCond %{HTTP_HOST} ^(www\.)?domain\-?three\.de
  • läuft genauso wie oben: four passt nicht

demanch dürfte die RewriteRule nicht ausgeführt werden:

RewriteRule (.*)$ http://newdomain.de/verz [R=301,L]

trotzdem Ergebnis:

http://newdomain.de/verz
Antworten |