Zur Navigation

Seltsames Weiterleitungsproblem seit gestern

1 Jürgen.bcx

Hallo,
ich muss ja sagen, nachdem was ich hier gelesen habe; ein super Support hier! Ich habe schon viele Threads durchstöbert, aber noch keine Lösung für meine spezifischen Probleme gefunden. Folgendes: Ich habe einen Account bei bplaced.net, die Adresse ist account.bplaced.net bzw. account account.bplaced.de. Ich habe eine Domain bei united-domains.de gekauft, diese leitet per CNAME seit einem Jahr erfolgreich auf account.bplaced.net weiter, auch alle *.domain.tld (also auch mit www davor).

Seit gestern Abend habe ich das Problem, dass wenn ich z.B. aufrufe: domain.tld/content/aktuelles ich auf account.bplaced.net/content/aktuelles/ weitergeleitet werde. Woran könnte das liegen? Danke!

28.03.2009 11:58

2 tobi

und warum schaltest du deine domain nicht als a-record auf?

28.03.2009 14:00

3 Jörg Kruse

Hast du in domain.tld/ und / oder in domain.tld/content/ eine .htaccess Datei liegen und den Inhalt geändert?

28.03.2009 15:03

4 Jürgen.bcx

Hallo und danke für eure Antworten! @ Tobi: Es wurde empfohlen, einen CNAME-Eintrag zu verwenden, was ja auch den Vorteil hat, dass die aufgeschaltete Domain erreichbar ist, wenn sich die Server-IP ändert.

@ Jörg: Ich habe in domain.tld/ eine .htaccess mit folgendem Inhalt:

<FilesMatch "\.(rar|flv|jpg|jpeg|mp3|pls|avi|zip)$" >
ForceType application/octet-stream
</FilesMatch>

<Files .htaccess>
order allow,deny
deny from all
</Files>

<FilesMatch "^\." >
deny from all
</FilesMatch>

ErrorDocument 404 /content/notfound.php

Options -Indexes

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.tld/.*$ [NC]
RewriteRule \.(jpg|png|rar|zip|avi|flv)$ - [F]

RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.tld$ [NC]
RewriteRule ^(.*)$ http://domain.tld/$1 [R=301,L]

Dies ist meine einzige htaccess, mit der auch alles wunderbar funktionierte - bis gestern.

*edit: Folgender Code zeigt leider keine Ergebnisse:

RewriteCond %{HTTP_HOST} ^([^.]+)\.account\.bplaced\.de$ [NC]
RewriteRule ^(.*)$ http://domain.tld/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^([^.]+)\.account\.bplaced\.net$ [NC]
RewriteRule ^(.*)$ http://domain.tld/$1 [R=301,L]

Woran liegt es?

28.03.2009 22:28 | geändert: 28.03.2009 23:14

5 Jörg Kruse

CNAME-RR statt A-RR sollte eigentlich nicht das Problem sein, denn es hat ja auch vorher so funktioniert. In der .htaccess sehe ich auch nichts, was eine Weiterleitung auf die Domain account.bplaced.de verursachen würde.

Normalerweise ist für die Weiterleitung von /verzeichnis nach /verzeichnis/ die DirectorySlash-Direktive verantwortlich. Diese ist wohl seit Apache 2.0.51 verfügbar. Wurde denn vorher gar nicht weitergeleitet oder bei Beibehaltung der Domain nur der Slash angefügt? Nach meinem Test mit dem Apache 2.2.8 wird bei einer solchen Weiterleitung die Domain nicht geändert, selbst dann nicht, wenn die Domain in der Konfiguration nicht als ServerAlias definiert ist. Aber vielleicht hat bplaced.de in der Konfiguration des VirtualHosts irgendwas verbogen. Darauf deutet denke ich auch hin, dass die Domain-Weiterleitungen in deinem Edit nicht funktionieren

29.03.2009 00:07 | geändert: 29.03.2009 00:11

6 Jürgen.bcx

Vielen Dank Jörg. Kann ich vielleicht daran was verändern:

Normalerweise ist für die Weiterleitung von /verzeichnis nach /verzeichnis/ die DirectorySlash-Direktive verantwortlich.

Ich habe mir folgendes durchgelesen: mod_dir.

Da ich den DirectoryIndex in meiner htaccess festlegen kann, müsste doch auch das Trailing-Slash automatisch funktionieren, da ja mod_dir demnach aktiv zu seien scheint, oder liege ich da falsch? Denn eine gleichnamige Datei zum Verzeichnis gibt es ja nicht.

Ich verstehe nur den Zusammenhang nicht; woher die Weiteleitung von domain.tld auf account.bplaced.de kommt. Wäre folgendes aus meinem vorhergehenden Post denn eigentlich richtig:

RewriteCond %{HTTP_HOST} ^([^.]+)\.account\.bplaced\.de$ [NC]
RewriteRule ^(.*)$ http://domain.tld/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^([^.]+)\.account\.bplaced\.net$ [NC]
RewriteRule ^(.*)$ http://domain.tld/$1 [R=301,L]

Danke und Gruß

29.03.2009 14:43 | geändert: 29.03.2009 14:44

7 Jörg Kruse

Ich verstehe nur den Zusammenhang nicht; woher die Weiteleitung von domain.tld auf account.bplaced.de kommt.

Das verstehe ich auch nicht - nach meinem Test leitet der Apache in so einem Fall auf dieselbe Domain weiter. Wie gesagt wäre es auch möglich, dass dein Hoster hier in der Konfiguration etwas verdreht hat. Was du hierbei noch testen könntest: handelt es sich um eine oder zwei hintereinander folgende Weiterleitungen (das kann z.B. mit der Firefox-Erweiterung Live HTTP Headers getestet werden).

Wäre folgendes aus meinem vorhergehenden Post denn eigentlich richtig:

RewriteCond %{HTTP_HOST} ^([^.]+)\.account\.bplaced\.de$ [NC]
RewriteRule ^(.*)$ http://domain.tld/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^([^.]+)\.account\.bplaced\.net$ [NC]
RewriteRule ^(.*)$ http://domain.tld/$1 [R=301,L]

Deine Weiterleitung wirkt nur auf eine Sub-Subdomain irgendwas.account.bplaced.net, aber nicht auf account.bplaced.net. Ich würde den Host vorne offen lassen - probier's mal so:

RewriteCond %{HTTP_HOST} account\.bplaced\.de$ [NC,OR]
RewriteCond %{HTTP_HOST} account\.bplaced\.net$ [NC]
RewriteRule ^(.*)$ http://domain.tld/$1 [R=301,L]

29.03.2009 16:06

8 Jürgen.bcx

Ich würde den Host vorne offen lassen - probier's mal so:

Da haben Sie natürlich Recht, meine Art war zu viel des Guten ;) Es funktioniert nun wie gewünscht, mit oder ohne Slash, schonmal vielen Dank dafür!

Ich habe noch ein anderes Problem: Vor einigen Wochen habe ich die entsprechende Site komplett umgestellt, sodass z.b. domain.tld/aktuelles/ unter domain.tld/content/aktuelles/ liegt. Google z.B. zeigt nun immernoch Links, die es nicht mehr gibt. Diese wollte ich per 301 auf die aktuelle Version weiterleiten. Nun habe ich folgende Regeln unter den von ihnen vorgeschlagenen ergänzt:

RewriteCond %{REQUEST_FILENAME} domain\.tld/aktuelles$ [NC]
RewriteRule ^(.*)$ domain\.tld/content/aktuelles$1 [R=301,L]

dies zeigt aber keine Wirkung?

Weiterhin versuche ich, bei ersatzlos gelöschten Unterbereichen (z.B. domain.tld/bereich) einen 410 zu senden. Dies funktioniert soweit ganz gut mit folgender Anweisung:

RewriteRule ^bereich - [G,L]

Nun möchte ich aber ein dynamisches ErrorDocument ausgeben, diesem müsste ich dann den HTTP_REFERER übergeben, nur wie geht das? Ich möchte zum Beispiel ausgeben:
Sie wollten "bereich" aufrufen, diese Seite wurde allerdings ersatzlos gestrichen.

*edit: Habe es nun in den Griff bekommen, indem ich mit PHP den HTTP_HOST und HTTP_REQUEST auslese und den Inhalt dynamisch anpasse. Das 301er Problem besteht weiterhin ;)

29.03.2009 17:59 | geändert: 29.03.2009 19:25

9 Jörg Kruse

Ich würde es so probieren:

RewriteRule ^aktuelles/(.*)$ http://domain.tld/content/aktuelles/$1 [R=301,L]

29.03.2009 20:50

10 Jürgen.bcx

Danke! Habe diese Rule fast genauso übernommen (bis auf das Slash nach aktuelles). Nun funktioniert alles, wie es soll; ich kann keine weiteren Fehler erkennen. Spielt es eigentlich eine Rolle, in welcher Reihenfolge die Rules und Conditions in der htaccess stehen, wenn sie alle von einem [L] gefolgt sind? Dieses habe ich nur an diesem Abschnitt nicht:

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.tld/.*$ [NC]
RewriteRule \.(jpg|png|rar|zip|avi|flv)$ - [F]

Vielen Dank nochmals!

30.03.2009 16:49