Seite 1 von 1

Weiterleitungskette notwendig?

Verfasst: 22.10.2019, 06:47
von drax
Hallo,

mir ist aufgefallen, dass bei meinen Webseiten teilweise lange Weiterleitungsketten entstehen.

Ich schlimmsten Fall:

http://www.webseite.de
301 auf https://www.webseite.de
301 auf http://webseite.de
301 auf https://webseite.de
dann endlich 200

Ansonsten:

http://www.webseite.de
301 auf https://www.webseite.de
301 auf https://webseite.de
dann Status 200

Ist da evtl. was falsch in der htaccess?

Lässt sich die Umleitung nicht direkt in nur einem einzigen Schritt einrichten, oder sind solche Weiterleitungsketten normal?

Bzw. ist sowas überhaupt ein Problem?

Zum überprüfen der Statuscodes habe ich httpstatus.io benutzt.

Verfasst:
von

Re: Weiterleitungskette notwendig?

Verfasst: 22.10.2019, 09:28
von supervisior
Also Deine Weiterleitungen sind sicherlich nicht ganz okay, wobei diese gänzlich zu eliminieren geht nicht, weil es immer darauf ankommt, wie man Deine Seite aufruft, sodass das nachfolgenden Szenario eigentlich normal ist. Stimmen tut aber trotzdem was nicht bei Dir.

Gehen wir mal davon aus, dass die endgültige URL Deiner Seite so lautet:

https://www.webseite.de

Vorausgesetzt es gibt einen entsprechede Redirect Rule in Deiner .htaccess, dann würde bei Eingabe von:

webseite.de (was dem Aufruf http://webseite.de entspricht)
zunächst entweder ein 301 auf https://www.webseite.de erfolgen
und dann ein weiterer 301 auf https://www.webseite.de

Was nach dem obigen Beispiel an welcher Stelle steht, hängt von der Reihenfolge ab, wie es in der .htacces definiert ist. Die 2-fache Umleitung könnte man noch auf 1 reduzieren, bedarf aber weiterer mod_rewrite Regeln.

In Deinem Fall stimmt da aber was nicht und da sind mind. 2 Weiterleitung zu viel drin, weil von https://www.webseite.de auf auf http://webseite.de und dann auf https://webseite.de geleitet wird. Um Dir da konkret helfen zu können, müsste man Deine .htaccess sehen

Mal als Beispiel wie Deine Weiterleitungen halbwegs korrekt aussehen sollte:

Code: Alles auswählen

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{SERVER_PORT} !^443$
  RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]  
  RewriteCond %{HTTP_HOST} !^www\.
  RewriteRule ^(.*)$ https://www.webseite.de/$1 [R=301,L]
</IfModule>
Die obigen Regeln könnte man aber noch weiter optimieren. Was Du aber zusätzlich machen solltest, wäre Deine URL bei https://hstspreload.org/ anmelden, sodass die Browser wissen, dass man Deine Seite immer nur mit https aufrufen soll.

Re: Weiterleitungskette notwendig?

Verfasst: 22.10.2019, 13:11
von drax
Alles klar, vielen Dank für die Infos.

Also bei den 2fach Umleitungen sieht es so aus:

Code: Alles auswählen

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^webseite\.de$ [NC]
RewriteRule ^(.*)$ http://webseite\.de/$1 [R=301,L]

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Bei der 3fach Umleitungen steht es umgedreht drinn. Das scheint der Fehler zu sein:

Code: Alles auswählen

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^webseite\.de$ [NC]
RewriteRule ^(.*)$ http://webseite\.de/$1 [R=301,L]
Werde da nochmal nacharbeiten.

Re: Weiterleitungskette notwendig?

Verfasst: 22.10.2019, 14:48
von supervisior
Schmeiß beides aus Deiner .htaccess raus und ersetze es mit meinem Schnipsel, dann bist Du auf sicheren Seite.

Re: Weiterleitungskette notwendig?

Verfasst: 22.10.2019, 16:26
von Hanzo2012
supervisior hat geschrieben: 22.10.2019, 09:28Die 2-fache Umleitung könnte man noch auf 1 reduzieren, bedarf aber weiterer mod_rewrite Regeln.
Beides auf einmal zu tun geht sogar kürzer:

Code: Alles auswählen

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{SERVER_PORT}:%{HTTP_HOST} !^443:www\.
  RewriteRule (.*) https://www.webseite.de/$1 [R=301,L]  
</IfModule>
Oder mit %{HTTPS} (kann "on" oder "off" sein) statt %{SERVER_PORT}, was ich besser finde:

Code: Alles auswählen

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{HTTPS}:%{HTTP_HOST} !^on:www\.
  RewriteRule (.*) https://www.webseite.de/$1 [R=301,L]  
</IfModule>

Re: Weiterleitungskette notwendig?

Verfasst: 04.01.2020, 19:30
von drax
Es ist zwar schon ein bisschen her, aber nun hatte ich endlich mal Zeit es richtig hinzubekommen.

Nutze nun folgenden Eintrag in der htaccess

Code: Alles auswählen

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.webseite\.de$ [NC]
RewriteRule ^(.*)$ https://webseite.de/$1 [L,R=301]

RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
Damit werden sämtliche Anfragen
http://www.webseite.de
http://webseite.de
https://www.webseite.de
innerhalb eines einzigen Umleitungsschritts auf die korrekte Variante umgeleitet
https://webseite.de


Was mich gleich zur nächsten Frage bringt:

Wenn ich die Domain nun auf eine andere Domain umleiten möchte, wie und wo trage ich am besten die entsprechenden Weiterleitungen der einzelnen URLs in die htaccess ein? Vor der www und https Umleitung oder danach?
Ich würde folgende Einträge nehmen:

Code: Alles auswählen

RewriteEngine On
Redirect 301 /alter-pfad/ https://www.neuewebseite.de/neuer-pfad/
Und da man wohl von detaillierten zu globalen Regeln von oben nach unten gehen soll, würde ich die Einträge ganz nach oben in die htaccess schreiben, oder? Die www und https Umleitungen sind dann ja eigentlich eh obsolet...

Re: Weiterleitungskette notwendig?

Verfasst: 04.01.2020, 21:12
von staticweb
Musst nur Zeile 2 und 3 anpassen, wenn du die Domain wechselst.

Re: Weiterleitungskette notwendig?

Verfasst: 04.01.2020, 21:35
von arnego2
drax hat geschrieben: 04.01.2020, 19:30 Vor der www und https Umleitung oder danach?
Ich würde folgende Einträge nehmen:

Code: Alles auswählen

RewriteEngine On
Redirect 301 /alter-pfad/ https://www.neuewebseite.de/neuer-pfad/
Und da man wohl von detaillierten zu globalen Regeln von oben nach unten gehen soll, würde ich die Einträge ganz nach oben in die htaccess schreiben, oder? Die www und https Umleitungen sind dann ja eigentlich eh obsolet...
Wenn du dir nicht ganz sicher bist dann lieber die 302

Re: Weiterleitungskette notwendig?

Verfasst: 05.01.2020, 10:36
von supervisior
drax hat geschrieben: 04.01.2020, 19:30 Es ist zwar schon ein bisschen her, aber nun hatte ich endlich mal Zeit es richtig hinzubekommen.

Nutze nun folgenden Eintrag in der htaccess

Code: Alles auswählen

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.webseite\.de$ [NC]
RewriteRule ^(.*)$ https://webseite.de/$1 [L,R=301]

RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]

Funktionell zwar richtig, aber ich verstehe nicht, warum Du die Lösung von @Hanzo2012 nicht verwendest. Das macht das Gleiche nur viel effektiver und schneller. Vor allem bleibt Dir der zusätzliche HSTS Header beim non-SSL Aufruf erspart. Was an Deiner Interpretation falsch ist, merkst Du spätestens, wenn Du Deine Seite bei https://hstspreload.org/ anmeldest damit jeder Browser schon vor dem Aufruf weiß, dass Deine Seite nur per https:// erreichbar ist. Du schenkst also Zeit beim Aufruf Deiner Seite her.

Re: Weiterleitungskette notwendig?

Verfasst: 08.01.2020, 19:41
von drax
supervisior hat geschrieben: 05.01.2020, 10:36 Funktionell zwar richtig, aber ich verstehe nicht, warum Du die Lösung von @Hanzo2012 nicht verwendest. Das macht das Gleiche nur viel effektiver und schneller. Vor allem bleibt Dir der zusätzliche HSTS Header beim non-SSL Aufruf erspart. Was an Deiner Interpretation falsch ist, merkst Du spätestens, wenn Du Deine Seite bei https://hstspreload.org/ anmeldest damit jeder Browser schon vor dem Aufruf weiß, dass Deine Seite nur per https:// erreichbar ist. Du schenkst also Zeit beim Aufruf Deiner Seite her.
Irgendwie klappt das mit der Lösung von @Hanzo2012 nicht. Da bekomme ich "Max redirects exceeded".
Werde mich mal bezüglich HSTS einlesen.

Re: Weiterleitungskette notwendig?

Verfasst: 08.01.2020, 20:03
von staticweb
> Irgendwie klappt das mit der Lösung von @Hanzo2012 nicht. Da bekomme ich "Max redirects exceeded".

Eine Endlosschleife? Dann hast du etwas falsch gemacht. Ich sehe dafür keine Indizien.

Allerdings kann es bei der kombinierten Lösung zu anderen Nebeneffekten kommen.

> Werde mich mal bezüglich HSTS einlesen.

Vorsicht! wenn das einmal eingerichtet ist gibt es keinen (zeitnahen) Weg zurück!