Verwenden Sie .htaccess, um HTTP auf HTTPs umzuleiten

Lesezeit: 8 Minuten

Verwenden Sie htaccess um HTTP auf HTTPs umzuleiten
Cristiano Maia

Bitte empfehlen Sie mir das nicht langer und sehr ausführlicher Thread mit mehr als 173 Upvotes. Es hat bei mir nicht funktioniert. Ich habe auch viele andere ausprobiert (1, 2, 3, 4). Sie alle geben mir TOO_MANY_REDIRECTS oder Fehler 500. Also, hier ist mein Problem:

Bei meinem aktuellen .htaccess passiert folgendes:

https://www.dukescasino.com/ – funktioniert perfekt

https://dukescasino.com/ – leitet zu den oben genannten weiter, was großartig ist

Die beiden folgenden Optionen werden gut geladen, aber es sollte auf die https-Version umgeleitet werden:

http://www.dukescasino.com/

http://dukescasino.com/

Hier ist die aktuelle .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Ich glaube nicht, dass es relevant ist, aber wenn ja, hier ist die Liste der derzeit aktiven Plugins:

  • Erweiterte benutzerdefinierte Felder
  • All-in-One-SEO-Paket
  • Elementtyp des Bop-Suchfelds für Navigationsmenüs
  • Kontaktformular 7
  • Kommentare deaktivieren
  • Google XML-Sitemaps
  • Jetpack von WordPress.com
  • Suchen & Filtern
  • Schieberegler WD
  • TablePress
  • UpdraftPlus – Sichern/Wiederherstellen
  • Wordfence-Sicherheit
  • WPide
  • WP Schmus
  • WP-Super-Cache

Bearbeiten 1 – Durchgeführte Tests:

Prüfung A:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} off
# First rewrite to HTTPS:
# Don't put www. here. If it is already there it will be included, if not
# the subsequent rule will catch it.
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Now, rewrite any request to the wrong domain to use www.
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Ergebnis: ERR_TOO_MANY_REDIRECTS

Prüfung B:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Ergebnis: ERR_TOO_MANY_REDIRECTS

Prüfung C:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{SERVER_PORT} ^80$
 RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Ergebnis: ERR_TOO_MANY_REDIRECTS

Prüfung D:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

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

# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Ergebnis: ERR_TOO_MANY_REDIRECTS

Prüfung E:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI}$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}$1

# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Ergebnis: 302 gefunden. Außerdem wurde beim Versuch, ein ErrorDocument zur Verarbeitung der Anforderung zu verwenden, ein 500 Internal Server Error-Fehler festgestellt.

  • Vielleicht nur ein Tippfehler, aber du hast dich buchstabiert .htaccess falsch (auf die gleiche Weise) 3 mal? Ihre aktuelle .htaccess-Datei ist nicht vollständig, Ihnen fehlt eine RewriteEngine On Richtlinie. Wenn Sie die kanonische Weiterleitung hinzufügen, fügen Sie diese vermutlich ganz oben in Ihre .htaccess-Datei ein? Das behauptest du https://example.com Weiterleitungen OK, aber das ist in Ihrer Konfigurationsdatei nicht angegeben? Wo/wie passiert das? Es wäre nützlich zu wissen, was Sie tatsächlich versucht haben – das funktioniert nicht.

    – Herr weiß

    17. August 2015 um 13:26 Uhr


  • Entschuldigung, die .htaccess war ein Tippfehler, ich habe es jetzt behoben. Ich habe auch den aktuellen .htaccess-Code und alle Tests aktualisiert, die ich mit dem Ergebnis von jedem durchgeführt habe. Ich weiß nicht, wie das https ohne www auf die umleitet www Version aber. Danke

    – Cristiano Maia

    17. August 2015 um 15:19 Uhr


  • Normalerweise würden Sie die Servervariable erwarten HTTPS festgelegt werden (Ihre Ergebnisse legen etwas anderes nahe). Stecken Sie hinter einem Proxy? (Test E führt wahrscheinlich zu einer Art „rekursivem“ 404?)

    – Herr weiß

    17. August 2015 um 16:44 Uhr

  • Ich habe gerade 123-reg (Hosting-Unternehmen) kontaktiert, um zu überprüfen, ob sie auf ihrer Seite etwas eingerichtet haben, das die Dinge durcheinander bringt. Selbst wenn ich das funktionierende .htaccess habe und das Umleitungstool in ihrem (123reg) Control Panel einrichte, erhalte ich ERR_TOO_MANY_REDIRECTS.

    – Cristiano Maia

    17. August 2015 um 17:21 Uhr

Auf Dreamhost hat das funktioniert:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

  • Dieser wird für mich auf Namecheap Shared Hosting bearbeitet.

    – Liakat

    2. Juli 2016 um 19:24 Uhr

  • Arbeitete auch auf asmallorange.com

    – Leonardo Herrera

    17. März 2017 um 18:19 Uhr

  • Hat bei mir auf einem LAMP-Server mit WordPress 4.7.4 beim Anbieter Time4VPS funktioniert

    – John Smith

    29. April 2017 um 11:06 Uhr

  • Achten Sie auf die genaue Reihenfolge der Regeln. Ich hatte die Rewrite-Regel unter die bestehenden WordPress-Regeln gestellt, aber dann nur die Root-Domain umgeleitet und keine HTTP-URI-Anfragen. Diese korrekte Reihenfolge über den bestehenden WordPress-Regeln leitet alle HTTP-Anfragen richtig weiter.

    – delrocco

    20. Juni 2017 um 21:52 Uhr

  • Es ist nicht nötig, auf jeden einzelnen Host hinzuweisen, auf dem dies funktioniert! Es ist ein einfaches Stück Code für .htaccess, also sollte es auf den meisten Systemen funktionieren, die .htaccess akzeptieren. Wenn es nicht funktioniert, liegt es an einem seltsamen Szenario.

    – Phil Healey

    6. April 2018 um 11:43 Uhr

Problem gelöst!

Endgültiger .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{ENV:HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

  • Diese Änderung führte zu “[www.domain.com] hat Sie zu oft umgeleitet” für eine Domain, die ich auf Dreamhost hoste. Kein Glück. Dies hat jedoch funktioniert: RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    – Jason Schah

    7. April 2016 um 11:37 Uhr


  • Ich musste nur das ändern RewriteCond zum folgenden, um das zu vermeiden too many redirects: RewriteCond %{HTTPS} !=on

    – Lucaferrario

    23. November 2016 um 13:36 Uhr

  • Bei mir auf virtualmin verursachte Apache 2.4 verboten. Die Lösung von @jason-shah hat funktioniert.

    – Aleksandar Pavić

    23. Dezember 2016 um 11:06 Uhr

  • Funktioniert nicht für mich. Diese Lösung leitet “Sie zu oft” um. Chrom sagt.

    – zhekaus

    22. März 2017 um 5:23 Uhr

  • Dies ist die einzige Lösung, die für mich funktioniert hat. (Viel zu viele getestet.) Das “ENV:” war entscheidend. Aus den Antworten und anderen Lösungen geht hervor, dass Sie es auf einigen Hosts auch nicht tun beinhalten müssen es während auf andere Sie muss es weglassen. Übrigens: Für alle, die dies verwenden möchten, sollten Sie die Verwendung von in Betracht ziehen R=301 statt nur R (was 302-Umleitung bedeutet).

    – Vit Kovalčik

    1. Oktober 2017 um 8:49 Uhr


Für mich geht das:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !on           
RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R,L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

1646640554 161 Verwenden Sie htaccess um HTTP auf HTTPs umzuleiten
Hüseyin Yağlı

In meinem Fall enthielt die htaccess-Datei viele Regeln, die von Plugins wie installiert wurden Verfall in ferner Zukunft und WPSuperCache und auch die Zeilen von WordPress selbst.

Um die Dinge nicht durcheinander zu bringen, musste ich die Lösung an den Anfang von htaccess stellen (das ist wichtig, wenn Sie es an das Ende setzen, führt dies zu einigen falschen Weiterleitungen aufgrund von Konflikten mit dem Cache-Plugin)

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

Auf diese Weise werden Ihre Zeilen nicht von WordPress durcheinander gebracht, falls sich einige Einstellungen ändern. Auch der <IfModule> Abschnitt kann problemlos wiederholt werden.

Ich muss Jason Shah für die nette htaccess-Regel danken.

Zu Ihrer Information, es hängt wirklich von Ihrem Hosting-Provider ab.

In meinem Fall (Infomaniak), nichts oben funktionierte tatsächlich und ich bekam eine unendliche Umleitungsschleife.

Der richtige Weg dazu ist tatsächlich auf ihrer Support-Site erklärt:

RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://your-domain.com/$1 [R=301,L]

Erkundigen Sie sich daher immer bei Ihrem Hosting-Provider. Hoffentlich haben sie einen Artikel, der erklärt, wie das geht. Ansonsten einfach den Support fragen.

1646640555 794 Verwenden Sie htaccess um HTTP auf HTTPs umzuleiten
Gemeinschaft

Dies ist getestet und sicher in der Anwendung

Warum?: Wenn WordPress Bearbeiten Sie Ihre Re-Write-Regelnstellen Sie also sicher, dass Ihre Die HTTPS-Regel sollte nicht entfernt werden! das ist also kein Konflikt mit nativen WordPress-Regeln.

<IfModule mod_rewrite.c>
   RewriteCond %{HTTPS} !=on
   RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R,L]
</IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
  #Your our WordPress rewrite rules...
</IfModule>
# END WordPress

Notiz: Du musst dich ändern WordPress-Adresse & Website-Adresse URLs zu https:// in Allgemeine Einstellungen Auch (wp-admin/options-general.php)

Verwenden Sie htaccess um HTTP auf HTTPs umzuleiten
Steve

Ich habe festgestellt, dass alle in diesen Fragen und Antworten aufgeführten Lösungen bei mir leider nicht funktioniert haben. Was funktioniert hat war:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^/?$ "https\:\/\/www\.example\.com\/" [R=301,L]
</IfModule>
# End WordPress

Beachten Sie, dass die obigen WordPress-Regeln für WordPress im Mehrbenutzer-Netzwerkmodus gelten. Wenn sich Ihr WordPress im Single-Site-Modus befindet, würden Sie Folgendes verwenden:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^/?$ "https\:\/\/www\.example\.com\/" [R=301,L]
</IfModule>
# End WordPress

964250cookie-checkVerwenden Sie .htaccess, um HTTP auf HTTPs umzuleiten

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy