https mehrere Weiterleitungen

Ich bin dabei, mein Protokoll von http zu https zu ändern.

Ich habe WordPress als Unterverzeichnis installiert (zB: www.example.com/blog)

Ich habe den Server hinter einem Load Balancer, Anfragen an den Load Balancer sind verschlüsselt, aber Anfragen vom Load Balancer an den Server sind nicht.

Ich habe die siteurl und siteurl Parameter aktualisiert, um die https-Adresse wiederzugeben. Und ich habe den folgenden Code zu meiner wp-config.php Datei wp-config.php :

 if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) $_SERVER['HTTPS']='on'; 

Aus irgendeinem Grund, wenn ich auf die URL https://www.example.com/blog gehe, treten die folgenden Weiterleitungen auf: https: //…blog -> http: //…blog/

http: //…blog/ -> https: //…blog/

Ich kann mit einer Umleitung leben (die für das Hinzufügen des Schrägstrichs), aber ich verstehe nicht, warum es auf die http:// -Adresse umleitet. Ich sehe nichts in meinem Setup, das immer noch auf http:// verweist.

Warum macht es das?

Ich habe versucht, den Cache meines Browsers zu löschen. Ich habe auch eine .htaccess-Datei, aber ich vermute, dass es nichts damit zu tun hat, da die Umleitungen auftreten, selbst wenn der gesamte Code in der. .htaccess Datei kommentiert ist

In jemand findet immer noch die htaccess Datei relevant: Ich habe zwei Regeln in der htaccess Datei:

 RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} =http RewriteRule . https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent] 

zum Umleiten von http zu https

und

  RewriteEngine On RewriteBase /blog/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /blog/index.php [L]  

um den Schrägstrich hinzuzufügen (denke ich).

Obwohl die erste Regel nicht relevant ist (weil ich direkt auf die https Adresse gehe). Und das Kommentieren der zweiten Regel hat keine Auswirkungen auf das Problem in Frage.

Gibt es irgendwo anders in meinem Setup, wo ich WordPress über die Tatsache aktualisieren muss, dass ich https ?

Vielen Dank.

Solutions Collecting From Web of "https mehrere Weiterleitungen"

Dies ist etwas raten, aber es ist wahrscheinlich ein Ergebnis der Webserver-Konfiguration. Was Ihr Server wahrscheinlich tut, ist zu sehen, dass die Anfrage die blog URL der Site laden möchte. Es schaut aus und sieht, dass blog ein Verzeichnis ist, fügt einen Schrägstrich hinzu und leitet es weiter. Jetzt, da der Load Balancer eine http Anfrage sendet, wird der Webserver auf http umgeleitet. Danach wird die Anfrage an das WordPress-Verzeichnis gestellt und alle Ihre htaccess- und wordpress-Logiken treten ein und stellen die korrekten Informationen / Weiterleitungen etc. zur Verfügung.

Lösung … wenn dies nicht nur eine gute Geschichte ist, sondern auch eine wahre, sollte eine http to https-Umleitung in einem htaccess des Stammverzeichnisses es wahrscheinlich beheben.

Wenn es tatsächlich das Problem behebt (und Sie glauben, dass der Fehler Ihre Zeit wert ist), sollten Sie erwägen, die “wordpress” -Htaccess in die root-Datei zu integrieren, da Apache alle htaccess in jedem Verzeichnis in der Hierarchie bei jeder Anfrage liest und “läuft” “Sie, die eine sinnlose Zeitverschwendung ist.

Sie müssen die baseurls in Ihrer database aktualisieren. Nämlich die option_values ​​für siteurl und home in der Optionstabelle .

Der folgende Code wird das für Sie robust machen. Achten Sie auf das Präfix, das hier angegeben ist “wp_”, aber das sollte natürlich nicht sein! 🙂 Natürlich müssen Sie auch den Site-Namen ändern:

 UPDATE wp_options SET option_value = replace(option_value, 'http://www.example.com/blog', 'https://www.example.com/blog') WHERE option_name = 'home' OR option_name = 'siteurl'; UPDATE wp_posts SET guid = REPLACE (guid, 'http://www.example.com/blog', 'https://www.example.com/blog'); UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://www.example.com/blog', 'https://www.example.com/blog'); UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://www.example.com/blog','https://www.example.com/blog'); 

Versuchen Sie es in Ihrer .htaccess-Datei

  RewriteEngine On RewriteBase /blog/ RewriteCond %{ENV:HTTPS} !=on RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L] RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /blog/index.php [L]  

Sehen Sie, ob es hilft

Sie sollten WordPress-Dateien nicht selbst bearbeiten müssen. WordPress kann mit http oder https ohne manuelle Codeänderung verwendet werden.

Wenn Sie das Protokoll für eine bestehende WordPress-Site ändern müssen, können Sie zwei Dinge tun:

  1. Stellen Sie sicher, dass Ihr Blog über http und https erreichbar ist. Dann wechseln Sie zu Ihren WordPress-Einstellungen im Backend und aktualisieren Sie einfach die Blog-URL von http://example.org zu https://example.org. WordPress sollte die database und die .htaccess-Datei selbst aktualisieren

  2. Sie können in der database suchen und ersetzen. Um dies zu tun, müssen Sie auf serialisierte Daten achten, die nicht durch einen einfachen Such- und Ersetzungsprozess erkannt werden. Ich empfehle Ihnen, ein Tool wie von Interconnect zu verwenden

Stellen Sie sicher, dass Ihre wp-config.php keine fest codierte URL enthält ( siehe “Ändern der Site-URL” ), wodurch Ihre Änderungen wieder überschrieben werden.