Zur Navigation

Redirect 301 Fehler

1 qwerti

Hallo Jörg,

ich sitze leider schon etwas länger an folgendem Problem, ich kann mir den Fehler leider nicht erklären, vielleicht kannst Du mir ja hier auf die Sprünge helfen, was echt klasse wäre.

Folgendes Problem habe ich:

Bei Strato liegen zwei Domains.
1. https://www.meineSeite.de
2. https://www.meineSeite.com

Die https://www.meineSeite.com leite ich extern auf die https://www.meineSeite.de/meinUnterverzeichnis/ weiter. Das funktioniert auch einwandfrei.

Jetzt möchte ich aber auch gern die https://www.meineSeite.de extern auf die https://www.meineSeite.de/meinUnterverzeichnis/ weiterleiten. Und genau hier liegt der Hund begraben. Wenn ich das mache, erhalte ich folgenden Fehler wenn ich der .htaccess zusätzlich folgenden Code hinterlege

RewriteRule ^www.meineSeite.de/xtc$ www.meineSeite.de/meinUnterverzeichnis/[L,R=301]

Und in der Browser URL entsteht folgender Fehler.
https://www.meineSeite.de/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/ bis zu 50x

Der Browser, egal welcher, zeigt dann folgenden Fehler an
ERR_TOO_MANY_REDIRECTS

Also anscheinend läuft die 301 in einen loop. Aber ich kann mir den loop nicht erklären.

Strato
1. https://www.meineSeite.de
- SSL Zertifikat gesetzt
- keine Zwang auf HTTPS
- Umleitung nicht aktiv

2. https://www.meineSeite.com
- SSL Zertifikat gesetzt
- Zwang auf HTTPS gesetzt
- Umleitung aktiv auf https://www.meineSeite.de/meinUnterverzeichnis/

meine HTACCESS

RewriteEngine On

# www erzwingen
RewriteCond %{HTTP_HOST} !^www.meineSeite.de$
RewriteRule ^(.*)$ https://www.meineSeite.de/$1 [R=301,L]

# Domain auf verschlüsselte Verbindung umleiten
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]

# ErrorDocument 404
ErrorDocument 404 https://www.meineSeite.de/meinUnterverzeichnis/404.php

RewriteCond %{REQUEST_URI} !meinUnterverzeichnis/
RewriteRule ^(.*)$ /meinUnterverzeichnis/$1

Es muss doch möglich sein, dass man die .de Domain auf ein Unterverzeichnis weiterleiten kann, wenn man die URL https://www.meineSeite.de/ aufruft und diese dann per 301 an die https://www.meineSeite.de/meinUnterverzeichnis/ weiterleitet.

Ich habe mit einem Web-Tool die Redirects und loops getestet.

STATUS
https://www.meineSeite.com 301 200 okay
https://meineSeite.com 301 200 okay
https://meineSeite.de 301 200 okay
https://www.meineSeite.de 200 okay

Das Gleiche gilt für den Status mit Unterverzeichnis.

25.01.2023 08:56

2 Jörg Kruse

Jetzt möchte ich aber auch gern die https://www.meineSeite.de extern auf die https://www.meineSeite.de/meinUnterverzeichnis/ weiterleiten.

Also (nur) die Startseite soll auf https://www.meineSeite.de/meinUnterverzeichnis/ weitergeleitet werden?

RewriteRule ^www.meineSeite.de/xtc$ www.meineSeite.de/meinUnterverzeichnis/[L,R=301]

Gibt es in dem Verzeichnis, in welchem die .htaccess Datei liegt, ein Verzeichnis /www.meineSeite.de/ ? in der RewriteRule Direktive werden nur die Dateipfade angegeben, nicht der Host (der Domainname).

Wenn du www.meineSeite.de/xtc weiterleiten möchtest auf www.meineSeite.de/meinUnterverzeichnis/ :

RewriteCond %{HTTP_HOST} ^(www\.)?meineSeite\.de$
RewriteRule ^xtc$ https://www.meineSeite.de/meinUnterverzeichnis/ [R=301,L]

Diese Umleitung sorgt dann möglicherweise für den Loop:

RewriteCond %{REQUEST_URI} !meinUnterverzeichnis/
RewriteRule ^(.*)$ /meinUnterverzeichnis/$1

Da kommt es u.a. auf die Reihenfolge der Regeln an, ggf. würde ich aucch eher auf THE_REQUEST testen statt auf REQUEST_URI

25.01.2023 12:04 | geändert: 25.01.2023 12:15

3 qwerti

Danke für deine schnelle Rückmeldung.

Also (nur) die Startseite soll auf https://www.meineSeite.de/meinUnterverzeichnis/ weitergeleitet werden?

Ja genau. Ich möchte nur, dass die beiden URL´s
https://www.meineSeite.com
und
https://www.meineSeite.de
per 301 auf die folgende Domain umleiten. Sie soll sozusagen die Startdomain sein.

https://www.meineSeite.de/meinUnterverzeichnis/

Ich hatte es auch schon ohne dem folgenden Code getestet
RewriteCond %{REQUEST_URI} !meinUnterverzeichnis/
RewriteRule ^(.*)$ /meinUnterverzeichnis/$1
Aber auch ohne diesem Code, erhalte ich den Fehler

https://www.meineSeite.de/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/ bis zu 50x

Der Browser, egal welcher, zeigt dann folgenden Fehler an
ERR_TOO_MANY_REDIRECTS

25.01.2023 12:29

4 Jörg Kruse

RewriteRule ^(.*)$ /meinUnterverzeichnis/$1

Wenn der Ziel-Pfad mit einem Slash beginnt, bezieht sich dieser auf das Wurzelverzeichnis des Servers, nicht auf das Wurzelverzeichnis der betreffenden Domain! so erzeugst du wahrscheinlich einen Error 404 der dann auch noch weitergeleitet wird:

ErrorDocument 404 https://www.meineSeite.de/meinUnterverzeichnis/404.php

Grundsätzlich würde ich hier keine vollständige URL angeben, sondern einen Pfad (der sich in diesem Fall auf das Wurzelverzeichnis der Domain bezieht):

ErrorDocument 404 /meinUnterverzeichnis/404.php

Außerdem würde ich bei der internen Umleitung als Muster nicht ^(.*)$ verwenden, wenn du die Startseite weiterleiten möchtest, sondern ^(.+)$, so dass der REQUEST_URI nach dem Slash mindestens ein weiteres Zeichen enthält:

RewriteCond %{THE_REQUEST} !meinUnterverzeichnis/
RewriteRule ^(.+)$ meinUnterverzeichnis/$1

Aber auch ohne diesem Code, erhalte ich den Fehler

https://www.meineSeite.de/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/meinUnterverzeichnis/ bis zu 50x

Der Browser, egal welcher, zeigt dann folgenden Fehler an
ERR_TOO_MANY_REDIRECTS

Das machen die mindestens solange, bis du ihren Cache komplett leerst. Browser merken sich 301-Weiterleitungen und fragen dann nicht noch mal nach.

25.01.2023 15:23 | geändert: 25.01.2023 15:25

5 qwerti

Wenn ich diesen Code nutze
RewriteCond %{THE_REQUEST} !meinUnterverzeichnis/
RewriteRule ^(.+)$ meinUnterverzeichnis/$1

Dann funktioniert nur noch
https://www.meineSeite.de/meinUnterverzeichnis/
aber
https://www.meineSeite.de/
nicht mehr.

Wie kann ich per htaccess auf einen Unterordner verweisen aber dennoch soll er mir in der URL den Unterordner mit anzeigen?

Also wenn der User https://www.meineSeite.de in der URL eingibt, soll der Server auf https://www.meineSeite.de/meinUnterverzeichnis/ rooten und in der URL Leiste soll ebenfalls https://www.meineSeite.de/meinUnterverzeichnis/ stehen.

Also mit dem folgenden Code
RewriteCond %{REQUEST_URI} !meinUnterverzeichnis/
RewriteRule ^(.*)$ /meinUnterverzeichnis/$1
funktionieren beide URLs. Aber wie erwähnt, möchte ich, dass die Domain nur unter https://www.meineSeite.de/meinUnterverzeichnis/ erreichbar sein soll. Parallel dazu soll sie auf www. UND https:// verweisen.

25.01.2023 19:10

6 Jörg Kruse

Wenn ich diesen Code nutze
RewriteCond %{THE_REQUEST} !meinUnterverzeichnis/
RewriteRule ^(.+)$ meinUnterverzeichnis/$1

Dann funktioniert nur noch
https://www.meineSeite.de/meinUnterverzeichnis/
aber
https://www.meineSeite.de/
nicht mehr.

Diese interne Umleitung soll ja auch nicht für die Startseite funktionieren, da diese doch weitergeleitet werden soll! interne Umleitung + Weiterleitung auf das gleiche Ziel kann auch in einem Loop resultieren

Wie kann ich per htaccess auf einen Unterordner verweisen aber dennoch soll er mir in der URL den Unterordner mit anzeigen?

Durch eine Weiterleitung, die in mod_rewrite mit einem R Flag gekennzeichnet wird, wie z.B. in [R=301,L]

Ein Beispiel habe ich in meinem ersten Post schon gegeben:

Wenn du www.meineSeite.de/xtc weiterleiten möchtest auf www.meineSeite.de/meinUnterverzeichnis/ :

RewriteCond %{HTTP_HOST} ^(www\.)?meineSeite\.de$
RewriteRule ^xtc$ https://www.meineSeite.de/meinUnterverzeichnis/ [R=301,L]

Das Verzeichnis "xtc" hatte ich deinem (nicht funktionierenden) Code-Beispiel entnommen. Wenn du stattdessen die Startseite weiterleiten möchtest, musst du einfach nur das "xtc" weglassen:

RewriteCond %{HTTP_HOST} ^(www\.)?meineSeite\.de$
RewriteRule ^$ https://www.meineSeite.de/meinUnterverzeichnis/ [R=301,L]

26.01.2023 10:17 | geändert: 26.01.2023 10:18

7 qwerti

Hallo Jörg,

vielen Dank :-) perfecto

Dein Code macht genau das was er soll.
RewriteCond %{HTTP_HOST} ^(www\.)?meineSeite\.de$
RewriteRule ^$ https://www.meineSeite.de/meinUnterverzeichnis/ [R=301,L]

Die http Status codes sind ebenfalls perfecto.

26.01.2023 12:21

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]