it-swarm.com.de

.htaccess error - ERR_TOO_MANY_REDIRECTS

Ich habe diese .htaccess-Datei, um http:// zu https:// umzuleiten
Ich habe auch www. zur Umleitung der Root-Domain ausgeführt!
www. zur Root-Domain funktioniert! die https:// umleitung jedoch nicht! Wenn ich RewriteCond %{HTTPS} on auf RewriteCond %{HTTPS} off oder RewriteCond %{HTTPS} =!on setze, wird ein Browserfehler angezeigt:

Die Seite example.com funktioniert nicht

mysite.com hat Sie zu oft umgeleitet.

Versuchen Sie, Ihre Cookies zu löschen.

ERR_TOO_MANY_REDIRECTS


Eine Bearbeitung, die ich gemacht habe, hat mir einen Fehler von 500 eingebracht, aber ich habe den Fehler auf den vorherigen Stand zurückgesetzt! Alles, was ich getan habe, war die Änderung: RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} zu RewriteRule(.*) https://%{HTTP_Host}%{REQUEST_URI} oder RewriteRule (.*)https://%{HTTP_Host}%{REQUEST_URI}

Hat jemand eine Idee, wie das Problem behoben werden kann?

Dies ist meine gesamte .htaccess Datei!

<IfModule mod_rewrite.c>
 RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI}
RewriteCond %{HTTPS} on          [OR]
RewriteCond %{HTTP_Host} ^www\.   [NC]
RewriteRule ^ https://antimalwareprogram.co%{REQUEST_URI}     [R=301,L,NE]
</IfModule>
2
user8529958
RewriteCond %{HTTPS} on
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI}

Ja, dies erzeugt eine Umleitungsschleife. Die Logik ist falsch. Dies sagt Folgendes aus: Wenn HTTPS aktiviert ist, leiten Sie zu HTTPS um. Sie sollten überprüfen, ob HTTPS "aus" ist (oder "nicht ein", dh. !on).

(Durch Entfernen der Leerzeichen zwischen den Argumenten haben Sie wahrscheinlich eine Umschreibeschleife erstellt, daher der Fehler 500. Leerzeichen sind Begrenzer in Apache-Konfigurationsdateien.)

Versuchen Sie stattdessen Folgendes:

RewriteEngine On
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_Host} ^www\. [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [R=302,L,NE]

Dies behandelt sowohl die kanonischen Weiterleitungen von HTTPS als auch von www. Du brauchst nicht die erste Regel. Sie brauchen auch nicht den Container <IfModule>.

Ändern Sie den 302 nur dann in 301, wenn Sie sicher sind, dass er ordnungsgemäß funktioniert.

Stellen Sie vor dem Testen sicher, dass Sie Ihren Browser-Cache geleert haben. 301s werden vom Browser hart zwischengespeichert.


UPDATE: Wenn dies immer noch den gleichen Fehler anzeigt (eine Umleitungsschleife), wird Ihr SSL möglicherweise von einem Front-End-Proxy verwaltet, nicht von Ihrem Anwendungsserver. In diesem Fall können Sie die Servervariable HTTPS nicht verwenden. Siehe diese verwandten Fragen:


Anscheinend musste in diesem Fall ENV:HTTPS (eine Umgebungsvariable) anstelle von HTTPS (Apache-Servervariable) verwendet werden. Beachten Sie jedoch, dass dies nicht standard-/serverspezifisch ist, da dies impliziert, dass ein Front-End-Proxy zum Verwalten von SSL verwendet wird.

5
MrWhite