www. Umleitung funktioniert nicht -> Browser-Error: Diese Seite funktioniert nicht - ERR_TOO_MANY_REDIRECTS
am 03.07.2023 - 23:08 Uhr in
Hallo zusammen,
um die Performance der Website/Servers zu verbessern habe ich beim Hoster IONOS das CDN aktiviert.
Allerdings funktioniert dort CDN nur auf Domains, die mit "www." starten.
Meine Drupal-Seite öffnet jedoch ohne www. am Anfang - also einfach https://meineseite.art/de
Daher möchte ich nun eine Umleitung auf www.meineseite.art/de einrichten.
Dazu habe ich in der htaccess entsprechenden Code einkommentiert:
RewirteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Die RewirteEngine ist on
mod_rewrite ist auf dem Server standardmäßig aktiviert
protossl is set to "s" for https
Nach dem einkommentieren der www. Umleitung ist die Webseite nicht mehr erreichbar.
In der Adresszeile steht https://meineseite.art/index.php
Zudem gibt Chrome folgendes aus:
Diese Seite funktioniert nicht
meineseite.art hat dich zu oft weitergleitet.
Lösche deine Cookies
ERR_TOO_MANY_REDIRECTS
Löschen der Cookies hilft leider nicht.
Ich verwende Drupal 8
Kann mir ggf. jemand die Augen öffnen warum die www. Umleitung nicht funktioniert?
Ich habe mir bereits die anderen Beiträge zu www. Umleitung angeschaut. Das hilft mir allerdings nicht weiter.
Viele Grüße
Tom
- Anmelden oder Registrieren um Kommentare zu schreiben
RewriteRule anpassen
am 04.07.2023 - 07:59 Uhr
Hallo,
ein Vorschlag:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^meineseite\.art$ [NC]
RewriteRule ^(.*)$ https://www.meineseite.art/$1 [R=301,L]
Und für die Sicherheit in der settings.php von Drupal:
$settings['trusted_host_patterns'] = [
'^www\.meineseite\.art$',
];
Cache leeren nicht vergessen.
www-Umleitung funktioniert mal & dann wieder nicht: merkwürdig
am 01.08.2023 - 22:48 Uhr
Hallo schmittrich,
vielen Dank für die schnelle Antwort!!
Ich bin leider erst wesentlich später dazu gekommen, das auszuprobieren.
Die www-Umleitung hat auch zunächst sofort funktioniert.
Dann habe ich die Code-Zeilen aber für später wieder in der htaccess auskommentiert,
da ich mich zunächst noch mit dem Sicherheitshinweis von dir bzgl. settings.php beschäftigen wollte.
Nun habe ich deine Zeilen für die www-Umleitung wieder einkommentieren wollen.
htaccess gespeichert & cache geleert -> nun tritt wieder das gleiche Problem wie zu Anfang auf: Endlosweiterleitung führt zum Error.
Ich weiß nicht mehr woran das nun noch liegen kann.
Einziger Unterschied:
Beim ersten mal war CDN noch aktiviert (da haben deine Zeilen für htaccess funktioniert).
Beim zweiten mal hatte ich CDN im Bearbeitungsmodus (deaktiviert) -> da funktionierte die www-Umleitung plötzlich nach dem einkommentieren nicht mehr.
Aber auch mit erneut eingeschaltetem CDN und einem Tag warten funktioniert es weiterhin nicht mehr.
Woran könnte das liegen?
Die Endlos-Schleife sprint immer zwischen der https://meineseite.de/index.php & https://www.meineseite.de/index.php hin und her. Laut Redirect Path scheinen beide URLs eine "301: Permanent redirect to" Funktion zu haben...
Zusätzliche allgemeine Infos:
- Dedicated managed Server (kein Root-Zugriff)
- CDN über Cloudflare als Drittanbieter (CDN Cache bereits manuell geleert -> ohne Auswirkung)
Viele Grüße
Christoph
Debugging-Vorschläge
am 02.08.2023 - 06:40 Uhr
Hallo Christoph,
eine Endlosschleife von Weiterleitungen ("Redirect Loop") entsteht ja, wenn die Website konstant zwischen zwei oder mehr URLs hin und her springt, ohne jemals auf einer Seite zu landen.
Hier ein paar Punkte die du noch überprüfen kannst:
Wichtig auch, nach Änderungen in der Konfiguration stets den Cache zu leeren.
Viel Glück bei der Fehlersuche!
Hallo Schmittrich, danke für
am 02.08.2023 - 23:14 Uhr
Hallo Schmittrich,
danke für die erneut sehr schnelle Antwort.
- ich habe lediglich den Code, der bereits einmal für die www-Umleitung funktioniert hat, wieder aktiviert (#-Zeichen in den beiden Zeilen gelöscht) & den Cache und die Cockies gelöscht --> funktioniert aber irgendwie nicht mehr
- Ich selbst verwende kein Cloudflare, sondern mein Hoster wenn das CDN dort aktiviert wird. Ich fürchte da kann ich nicht viel machen
- Im CDN kann man ne Menge Einstellungen vornehmen, die mir wenig sagen. CDN war eingeschaltet als es einmal funktioniert hat. Das CDN funktioniert laut Hoster auch nur bei www-Adressen.
- Drupal Plugins und Module gibt es bei meiner Seite sehr viele ... könnte man prüfen, ob da irgendwas unregelmäßig Ärger macht
- Server-Konfiguration: Werde das noch einmal mit einem Hoster besprechen
Übrigens, die Dateiberechtigung steht auf 644 (das war auch beim erfolgreichen Versuch der Fall) und stand vorher auf 604
Irgendwas ist unregelmäßig. Es hat ja einmal direkt mit deinen Codezeilen funktioniert. Das macht mich stutzig...
Mich macht noch das "/index.php" nachdenklich das bei der Endlosschleife am Ende der URL auftaucht. Das ist nicht normal.
In der htaccess gibt es eine aktivierte "FallbackResource /index.php" für den Fall mod_rewrite ist nicht eingeschaltet. mod_rewrite ist laut meinem Hoster standardmäßig eingeschaltet --> könnte es wegen /index.php am Ende der URL sein, dass mod_rewrite doch nicht (durchgegängig) eingeschaltet ist?
Gibt es denn nur über die .htaccess die Möglichkeit Drupal dazu zubringen, die www-address zu verwenden?
Gibt es ggf. noch irgendwelche Einstellmöglichkeiten für die www-Verwendung in Drupal 8 selbst?
Viele Grüße
Christoph
Weitere Ideen
am 03.08.2023 - 17:31 Uhr
Hallo Christoph,
dass /index.php in deiner URL auftaucht, ist in der Tat etwas ungewöhnlich und könnte auf ein Problem mit mod_rewrite hinweisen. Es könnte sein, dass es zwar eingeschaltet ist, aber nicht richtig funktioniert oder durch eine andere Konfiguration auf deinem Server überschrieben wird.
Die Dateiberechtigung sollte eigentlich passen bzw. ich halte sie bezüglich deines Problems für irrelevant.
Für die Umleitung von non-www zu www in Drupal gibt es mehrere Ansätze:
.htaccess: Wie du bereits festgestellt hast, ist dies die übliche Methode. Der Code, den du verwendet hast, sollte eigentlich funktionieren, vorausgesetzt, dass mod_rewrite tatsächlich eingeschaltet und richtig konfiguriert ist. Die bequemste Möglichkeit das zu überprüfen besteht darin, den Drupal Status Report aufzurufen /admin/reports/status und dann in der Zeile PHP auf "Mehr Info" zu klicken. Dann wird phpinfo() ausgeführt. Auf der generierten Seite nach "mod_rewrite" suchen. Wenn es als aktiviertes Modul gelistet ist, ist es eingeschaltet.
Die Trusted Host Settings in deiner settings.php. Drupal 8 und 9 verwenden Trusted Host Patterns, um HTTP Host Header-Angriffe zu verhindern. Wenn deine www-Subdomain nicht in den Trusted Host Patterns aufgeführt ist, könnte dies Probleme verursachen. Überprüfe, ob "^www\.meineseite\.art$" zu deinen Trusted Host Patterns hinzugefügt wurde.
Einstellungen des Web-Servers: Abhängig von deinem Server ist es denkbar, dass Weiterleitungen auf Serverebene konfiguriert werden. Dies ist allerdings oft eine eher technische Aufgabe und erfordert root Zugriff, was bei einem Managed Server eventuell nicht möglich ist. Vielleicht hast du aber auch über ein Web UI wie Plesk Zugriff auf bestimmte Server-Parameter?
Some checks, aber noch nicht gelöst + Zusatz-Info
am 03.08.2023 - 22:05 Uhr
Hallo Schmittrich
ich habe im Drupal Status-Report/PHP/Mehr Info nach dem "mod_rewrite" via Browser-Suche gesucht: kein Eintrag oder Vermerk zu finden (es öffnet sich zend engine) -> merkwürdig, hier müsste ja min. mod_rewrite erwähnt werden ...
Die Website war noch nicht in der php.settings bei den Trusted Host Patterns hinzugefügt. Das habe nun gemacht -> leider ohne Erfolg - die Dauerschleife besteht noch.
Im Code werden in der settings.php beim Beispiel runde anstatt eckige Klammern verwendet. Habe nun auch runde klammern gesetzt.
Ab PHP8.0 soll wohl beides gehen; ich habe noch PHP7.4.33 - k.a. ob das jetzt Einfluss hat.
Laut meinem hoster (chat) besteht bei Managed Servern keine Möglichkeit zur Nutzung von Plesk
Die anderen Hinweise gilt es noch zu prüfen
ZUSATZ:
Habe aus Versehen eine Kleinigkeit unterschlagen, die aber ggf. gewaltig Einfluss hat.
meineseite.art wird automatisch weitergeleitet auf meineseite.art/en . Sinn ist es, einmal eine englische und deutsche Version der Website zu haben. Wo das initiert wird weiß ich leider nicht.
Müsste das /en in der .htaccess noch mit eingetragen werden und wenn ja, wie sieht das dann aus?
Viele Grüße
Christoph
Testen, ob Rewrite funktioniert und weiteres
am 04.08.2023 - 08:02 Uhr
Hallo Christoph,
ich vermute, dass die Weiterleitung per .htaccess in deiner Umgebung nicht funktioniert. Eigentlich hätte bereits dein ursprünglicher .htaccess-Code das bewirken sollen, was du möchtest, nämlich die Domain grundsätzlich mit "www" ausliefern.
Du könntest testen, ob die Weiterleitung per .htaccess prinzipiell geht, indem du vorübergehend auf eine andere Domain weiterleitest. Also zum Beispiel:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^meineseite\.art$ [NC]
RewriteRule ^(.*)$ https://www.testdomain.com/$1 [R=301,L]
Läuft Dein Webserver eigentlich unter Apache oder ist es ein NGINX-Server? Im letzteren Fall funktioniert .htaccess generell nicht. Die Info findet sich auf /admin/reports/status ziemlich weit oben unter "Web Server".
Mich wundert es ein wenig, warum das Erzwingen der Weiterleitung auf "www" nicht als Globaleinstellung deines Webservers verfügbar ist. Das ist eigentlich Standard heutzutage. Hast du deinen Hoster mal danach gefragt? Normalerweise findet sich das irgendwo in den Domaineinstellungen.
Dann ist da noch die Mehrsprachigkeit deiner Seite. Das könnte in der Tat eine weitere Fehlerquelle sein. Ich würde aber zunächst die obigen Punkte abklären.
Some hick up - now back to the origin issue
am 08.08.2023 - 20:51 Uhr
Hallo Schmittrich,
habe einiges in der Zwischenzeit ausprobiert.
Weiterleitung auf eine andere URL via htaccess funktioniert tatsächlich.
Die Website läuft auf einem Apache Server.
Hatte meinen Provider wegen der Weiterleitung auf www. und CDN kontaktiert. Er meinte ich solle alles einmal neu Aufsetzen - also CDN deaktivieren, Domain zurücksetzen, Webspace wieder mit Domain verbinden, Sub-Domain www auf das gleiche Verzeichnis einrichten und CDN wieder aktivieren --> Website war dann aber nach neuer Verbindung mit Domain nicht mehr aufrufbar -> Error 500 -> Die Admins vom Provider mussten ran --> PHP Version wurde beim Zurücksetzen autom. auf 8.1 gesetzt - meine Site läuft aber noch auf 7.4 -> Website wieder erreichbar
Weiter bin ich gerade noch nicht. Also Website öffnet immer noch ohne www.
ALLERDINGS habe ich zwischenzeitlich das Chrome Plugin "Redirect Path" installiert und sehe damit jetzt erst, dass www.meineseite.art bereits auf meineseite.art/en weitergeleitet wird. Das würde glaube ich die Endlosschleife erklären, wenn ich dann noch wieder auf www. weiterleiten will.
Wie finde ich jetzt nur raus wo der Redirect von www. auf ohne-www. geregelt ist ...? In der htaccess stehts nicht ...
Viele Grüße
Christoph
Mehrsprachigkeit ausschalten
am 09.08.2023 - 07:24 Uhr
Hm, ich tippe auf ein Problem, das mit der Mehrsprachigkeit zu tun hat. Wie verhält es sich denn, wenn du die Mehrsprachigkeit vorübergehend deaktivierst? (Cache leeren nicht vergessen)
Hm, wo/wie
am 14.08.2023 - 22:09 Uhr
Hallo Schmittrich,
irgendwo ist eine Umleitung auf meinseite.art/en aktiviert. Nutzer werden also auf eine englischsprachige Landing-Page umgeleitet.
Ich vermute, dass das irgendwo in Drupal selbst geregelt ist. Ich weiß leider nicht wo... ggf. nen Tipp?
Bisher ist die Sub-Domain www.meineseite.art auch noch nicht mit dem Server-Verzeichnis der Website verbunden.
Ohne das dürfte das doch dann eh nicht funktionieren, oder?
Viele Grüße
Christoph
Spracheinstellungen
am 15.08.2023 - 07:15 Uhr
Hallo Christoph,
deine Vermutung ist korrekt. Die Weiterleitung zu /en weist auf eine Umleitung hin, die durch Drupal verwaltet wird.
Spracherkennung und -auswahl:
Gehe zu Verwalten > Konfiguration > Regionales und Sprache > Sprachen > Spracherkennung und -auswahl
Dort gibt es mehrere Methoden zur Erkennung der Sprache, wie z.B. URL, Session, Browser usw. Vermutlich ist bei dir die "URL"-Methode aktiviert. Klicke auf "Konfigurieren" und siehe dort nach, ob "Pfadpräfix" als URL-Quelle ausgewählt ist. Wenn das der Fall ist, wird wahrscheinlich für Englisch der Präfix "en" verwendet. Dies könnte die Ursache für die Umleitung sein.
Standard-Spracheinstellung:
Gehe zu Verwalten > Konfiguration > Regionales und Sprache > Sprachen.
Hier kannst du die Standard-Sprache festlegen. Wenn Englisch als Standard-Sprache festgelegt ist und du die oben beschriebene "Pfadpräfix"-Methode verwendest, würde das erklären, dass Drupal beharrlich nach /en weiterleitet.