Zur Navigation

Nochmal: Weiterleitungen

1 Steff

Hallo Jörg,

freue mich, dass ich dieses tolle Forum gefunden habe!
Angenehmer Umgangston und sehr lesenswerte Beiträge, danke!

Ich hab einen Managed Server, den mir ein Bekannter eingerichtet hat, als ich noch gar nichts von der Materie verstand.

Bin also als Webmaster noch Neuling und hab ein paar Fragen zu Weiterleitungen.
Dazu hab ich mich jetzt mal in der Server-Sektion durch den 301-Weiterleitungs-Thread gekämpft, in dem ich viel gelernt habe.
Trotzdem wär ich froh, wenn mal noch ein Profi meine Fragen und meine Lösungsversuche ansehen und kommentieren / korrigieren könnte, bevor ich da evtl. Schaden anrichte ;-)

(1)
Ziel:
www.domain.de als meine Standarddomain festlegen

Lösungsversuch:
RewriteEngine on

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


(2)
Ziel:
domain.com und domain.net (mit und ohne www, beide ohne Inhalte)
permanent zur Standarddomain http://www.domain.de weiterleiten

Lösungsversuch:
RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteRule ^(.*)$ http://www.domain.de$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^domain.com$
RewriteRule ^(.*)$ http://domain.de$1 [L,R=301]  
------------------------------------------------------
RewriteCond %{HTTP_HOST} ^www.domain.net$
RewriteRule ^(.*)$ http://www.domain.de$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^domain.net$
RewriteRule ^(.*)$ http://domain.de$1 [L,R=301]

Anmerkung:
Fehlen da evtl. Backslashes? (Vgl. Schreibweise in Lösungsversuch 1).
Die Weiterleitung auf die www-lose domain.de: Wird das dann durch Lösung 1 abgefangen?


(3)
Ziel:
Die gewünschte neue Standarddomain (www.domain.de) war bisher nur durch 2 Dateien vertreten (index.htm und impressum.htm), die mir mein Bekannter direkt in den Server-Root gelegt hatte, was offenbar nicht so praktisch ist, wie ich jetzt verstehe.
Jetzt sollen diese 2 Dateien in das neu angelegte Verzeichnis www.domain.de im Server-Root.
(Dann kann ich immer die gesamte Website per FTP ins Root-Verzeichnis hochladen, was ja sinnvoller ist, als einzelne Dateien oder Ordner ins Root-Verzeichnis zu laden).

Lösungsversuch:
Redirect Permanent /index.htm http://www.domain.de/index.html
Redirect Permanent /impressum.htm http://www.domain.de/impressum.html

Anmerkung:
Spricht was dagegen, das neue Verzeichnis im Server-Root "www.domain.de" zu nennen?
Bei einer anderen Domain praktiziere ich das so und konnte bisher keine negativen Auswirkungen feststellen.

(4)
Ziel:
Confixx-Einstellungen anpassen.
Bisher steht da, eingetragen von meinem Bekannten:
domain.com --> http://www.domain.com
www.domain.com --> / (Slash ist Server-Root)

domain.de --> http://www.domain.de
www.domain.de --> / (Slash ist Server-Root)

domain.net --> http://www.domain.net
www.domain.net --> / (Slash ist Server-Root)

Das führt ja unweigerlich zu doppeltem Content, was ich jetzt weiß und daher für die neuen Inhalte vermeiden möchte.

Lösungsversuch Confixx:
domain.de --> /www.domain.de (Weiterleitung ins Verzeichnis www.domain.de im Server-Root)
www.domain.de --> /www.domain.de (Weiterleitung ins Verzeichnis www.domain.de im Server-Root)

Geht das mit der .com/.net auch so? Also:

domain.com --> /www.domain.de (Weiterleitung ins Verzeichnis www.domain.de im Server-Root)
www.domain.com --> /www.domain.de (Weiterleitung ins Verzeichnis www.domain.de im Server-Root)

domain.net --> /www.domain.de (Weiterleitung ins Verzeichnis www.domain.de im Server-Root)
www.domain.net --> /www.domain.de (Weiterleitung ins Verzeichnis www.domain.de im Server-Root)

Da ist mir noch nicht so ganz klar klar, wie bzw. ob das Zusammenspiel von HTTP- Weiterleitung (301) und interner Server-Umleitung klappt.

Uff, das wars...
Gar nicht so leicht, das als Anfänger in einen klaren Gedankengang zu fassen, sorry!

Ich hoffe, dass ich mich einigermaßen verständlich ausgedrückt habe...

Vielen Dank schon mal im Voraus für jegliche Hilfestellung!

Gruß
Steff

14.12.2008 15:59

2 Jörg

Hallo Steff,

(1) scheint soweit ok

bei (2) frage ich mich, warum du domain.net erst auf domain.de weiterleiten möchtest, und nicht gleich auf www.domain.de?

Wenn alle Domains auf das selbe Verzeichnis zeigen (siehe (4)), reicht (1) aber völlig aus - das leitet ja alle URLs weiter, die nicht dem Host www.domain.de entsprechen

zu (3): die Zuordnung des Verzeichnis kannst du mit Confixx machen (siehe (4)). Die URLs ändern sich dadurch ja nicht - eine Weiterleitung ergibt hier keinen Sinn und kann eine Endlosschleife erzeugen (in diesem Fall wohl nicht, da sich die Dateiendung von .htm auf .html geändert hat)

zu (4) ich nehme an, mit der durch einen Pfeil symbolisierten "Weiterleitungen" sind Verzeichnis-Zuordnungen der VirtualHost-Konfiguration gemeint. Das kannst du dann so machen

Da ist mir noch nicht so ganz klar klar, wie bzw. ob das Zusammenspiel von HTTP- Weiterleitung (301) und interner Server-Umleitung klappt.

Die Weiterleitung ist eine Aufforderung an den Bot / Browser, die Seite unter der (Weiterleitungs-)URL neu anzufordern. Von der interne "Umleitung" bekommen die Bots / Browser nichts mit - die URL bleibt ja dieselbe. Es entspricht einfach nur der Abbildung einer Domain auf ein bestimmtes Verzeichnis im Dateisystem

14.12.2008 18:00 | geändert: 14.12.2008 18:02

3 Steff

Hallo Jörg,

vielen Dank für die schnelle Hilfe!

Zitat von Jörg
Wenn alle Domains auf das selbe Verzeichnis zeigen (siehe (4)), reicht (1) aber völlig aus - das leitet ja alle URLs weiter, die nicht dem Host www.domain.de entsprechen

Gut zu wissen, dann werde ich mal mit Lösung (1) probieren, auch die .com-/.net-Domains auf die .de-Domain weiterzuleiten.

Zuvor muss ich allerdings noch Folgendes verstehen:

Zitat von Jörg

zu (3): die Zuordnung des Verzeichnis kannst du mit Confixx machen (siehe (4)). Die URLs ändern sich dadurch ja nicht - eine Weiterleitung ergibt hier keinen Sinn und kann eine Endlosschleife erzeugen (in diesem Fall wohl nicht, da sich die Dateiendung von .htm auf .html geändert hat)

Wie das mit Confixx und einer Verzeichnis-Zuordnung klappen soll, verstehe ich leider noch nicht, denn die URLs ändern sich doch jetzt (Datei-Endung htm --> html):
Wenn ich momentan bei Google nach domain suche, werden die index.htm und die impressum.htm an erster Stelle gezeigt.
Wie stelle ich es nun an, dass ein Klick auf diese Google-Treffer zu den neuen Dateien index.html und impressum.html im neuen Verzeichnis "www.domain.de" führen, das im Server-Root liegt? Mein Redirect-Permanent-Vorschlag (3) ist ja offenbar nicht korrekt.

Kannst Du mir da noch eine konkrete Anweisung geben?

Danke noch mal und schönen Gruß!
Steff

14.12.2008 23:37

4 Jörg

Wie das mit Confixx und einer Verzeichnis-Zuordnung klappen soll, verstehe ich leider noch nicht, denn die URLs ändern sich doch jetzt (Datei-Endung htm --> html):
Wenn ich momentan bei Google nach domain suche, werden die index.htm und die impressum.htm an erster Stelle gezeigt.
Wie stelle ich es nun an, dass ein Klick auf diese Google-Treffer zu den neuen Dateien index.html und impressum.html im neuen Verzeichnis "www.domain.de" führen, das im Server-Root liegt? Mein Redirect-Permanent-Vorschlag (3) ist ja offenbar nicht korrekt.

Der Vorschlag ist schon ok - ich hatte die Frage (3) in deinem ersten Beitrag so missverstanden, dass es dir primär darum ging, die Dateien auf ein bestimmtes Verzeichnis weiterzuleiten (und nicht darum, von *.htm nach *.html weiterzuleiten).

15.12.2008 07:17

5 Steff

Hallo Jörg,

Der Vorschlag ist schon ok - ich hatte die Frage (3) in deinem ersten Beitrag so missverstanden, dass es dir primär darum ging, die Dateien auf ein bestimmtes Verzeichnis weiterzuleiten (und nicht darum, von *.htm nach *.html weiterzuleiten).

danke für die Rückmeldung!

Da Du oben die Möglichkeit einer Endlosschleife nicht ganz ausschließt:
zu (3): die Zuordnung des Verzeichnis kannst du mit Confixx machen (siehe (4)). Die URLs ändern sich dadurch ja nicht - eine Weiterleitung ergibt hier keinen Sinn und kann eine Endlosschleife erzeugen (in diesem Fall wohl nicht, da sich die Dateiendung von .htm auf .html geändert hat)

Bevor ich das jetzt mal versuche:
Was passiert eigentlich, wenn so eine Endlosschleife entsteht?
Schmiert dann der Server ab oder kann ich das dann leicht wieder rückgängig machen, indem ich den betreffenden Eintrag in der htaccess lösche?

Noch eine Frage zur Syntax:
Ist von den beiden Schreibweisen "RedirectPermanent" und "Redirect Permanent" eigentlich eine die neuere oder vorzuziehen?

Gruß
Steff

15.12.2008 14:39

6 Jörg

Der Redirect sollte keine Endlosschleife ausführen. Den Satz in Klammern habe ich nachträglich eingefügt, als ich bemerkt habe, dass von *.htm auf *.html weitergeleitet wird

Was passiert eigentlich, wenn so eine Endlosschleife entsteht?

Der Browser ruft die Seite immer wieder von neuem ab.

Schmiert dann der Server ab oder kann ich das dann leicht wieder rückgängig machen, indem ich den betreffenden Eintrag in der htaccess lösche?

Ja, natürlich kannst du das rückgängig machen. Bei Änderungen in der .htaccess empfiehlt es sich, ein Backup der alten Datei zu machen, und die Änderungen immer zu testen.

Ist von den beiden Schreibweisen "RedirectPermanent" und "Redirect Permanent" eigentlich eine die neuere oder vorzuziehen?

Dei beiden sind äquivalent, siehe Anmerkungen zur Direktive RedirectPermanent in der Apache-Dokumentation

15.12.2008 14:56

7 Steff

OK, danke für die Erklärungen!

Dann werd ich's mal mit diesen Anweisungen
RewriteEngine on

RewriteCond %{HTTP_HOST} !^www\.domain\.de$
RewriteRule ^(.*)$ http://www.domain.de/$1 [L,R=301]
und
Redirect Permanent /index.htm http://www.domain.de/index.html
Redirect Permanent /impressum.htm http://www.domain.de/impressum.html

probieren.

Ist diese Reihenfolge in der htaccess für das oben geschilderte Anliegen OK?

15.12.2008 15:29

8 Jörg

Das sollte so gehen. Du kannst ja alle Fälle mal durchtesten.

15.12.2008 16:01

9 Steff

So, es klappt jetzt nach ein paar kleinen Änderungen alles wie gewünscht!
Vielen Dank fürs Händchenhalten ;-).

Folgende Änderungen gegenüber o.g. Punkt (4) Lösungsversuch Confixx:

Statt
domain.de --> /www.domain.de (Weiterleitung ins Verzeichnis www.domain.de im Server-Root)
www.domain.de --> /www.domain.de (Weiterleitung ins Verzeichnis www.domain.de im Server-Root)
domain.com --> /www.domain.de (Weiterleitung ins Verzeichnis www.domain.de im Server-Root)
www.domain.com --> /www.domain.de (Weiterleitung ins Verzeichnis www.domain.de im Server-Root)
domain.net --> /www.domain.de (Weiterleitung ins Verzeichnis www.domain.de im Server-Root)
www.domain.net --> /www.domain.de (Weiterleitung ins Verzeichnis www.domain.de im Server-Root)

muss es (zumindest bei meiner Lösung) in Confixx heißen:
domain.de --> / (Weiterleitung nach Server-Root)
www.domain.de --> /www.domain.de (Weiterleitung ins Verzeichnis www.domain.de im Server-Root)
domain.com --> / (Weiterleitung nach Server-Root)
www.domain.com --> / (Weiterleitung nach Server-Root)
domain.net --> / (Weiterleitung nach Server-Root)
www.domain.net --> / (Weiterleitung nach Server-Root)

Vielen Dank und schönen Feierabend!

Steff

15.12.2008 17:30

10 Steff

Hallo Jörg,

da die o.g. Weiterleitungen so gut funktionieren, wollte ich das jetzt analog auch für domain2 machen. Deren Inhalte liegen im Unterordner www.domain2.de.

Aber jetzt kommt bei allen Aufrufen von domain2 (mit oder ohne www) die Meldung: Forbidden!

Kann das daran liegen, dass bei domain2 im Gegensatz zum o.g. Fall im Server-Root keine index-Datei liegt? Bei domain1 liegt ja wie beschrieben noch eine alte index.htm, die jetzt per "Redirect Permanent" in den neuen Unterordner "www.domain.de" weitergeleitet wird. (Für domain2 hatte ich daher im Unterschied zur erfolgreichen domain1-Lösung die "Redirect Permanent"-Anweisung aus der htaccess genommen).

Die domain2 ist zwar bei Google sehr gut positioniert, obwohl dort die von meinem Bekannten vorgenommenen Weiterleitungen nach meinem hier erworbenen neuen Wissensstand eher suboptimal sind: Ein Unterordner "other-domains" im Server-Root mit JS-Weiterleitungen zum Unterordner www.domain2.de.
Daher mein Wunsch, das jetzt richtig per 301 zu machen.

Aber, wie gesagt, der Versuch, das jetzt für domain2 analog zum obigen, erfolgreichen Weiterleitungsfall zu machen, führt bei allen Aufrufen zur Forbidden-Meldung.

Könnte meine Vermutung bzgl. fehlender Index-Datei im Server-Root von domain2 da zutreffen?
Aufgrund mangelnder Erfahrung diesbezüglich fällt mir da nur die Lösung ein, analog zum Fall domain1 im Server-Root von domain2 eine index.html zu erstellen und dann per "Redirect Permanent" diese auf die bestehende und beizubehaltende index.htm im Unterordner www.domain2.de weiterzuleiten, wobei ich mir aber nicht so richtig vorstellen kann, dass eine so abenteuerliche Konstruktion erforderlich ist; aber außer dieser Analoglösung zu domain1 fällt mir aufgrund mangelnder Erfahrung keine andere Lösung ein.
Bevor ich das versuche und evtl. Google irritiere, wollte ich Dich noch mal um Deine Expertenmeinung dazu bitten.

Gruß
Steff

16.12.2008 01:15