wake-up-neo.net

https mehrere Weiterleitungen

Ich ändere gerade mein Protokoll von http auf https.

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

Ich habe den Server hinter einem Load Balancer, Anforderungen an den Load Balancer werden verschlüsselt, Anforderungen vom Load Balancer an den Server jedoch nicht.

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

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

Aus irgendeinem Grund treten beim Aufrufen der URL https://www.example.com/blog die folgenden Weiterleitungen auf: https: //...blog -> http://...blog/

http: //...blog/ -> https: //...blog/

Ich kann mit einer Umleitung leben (die zum Hinzufügen des Schrägstrichs), aber ich verstehe nicht, warum sie zur http://-Adresse umleitet. In meinem Setup wird nichts angezeigt, das noch auf http:// verweist.

Warum macht es das?

Ich habe versucht, den Cache meines Browsers zu leeren. Ich habe auch eine .htaccess-Datei, aber ich vermute, sie hat nichts damit zu tun, da die Weiterleitungen auch dann auftreten, wenn der gesamte Code in der .htaccess-Datei kommentiert ist

Bei jemandem ist 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]

für die Umleitung von http zu https

und

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

für das Hinzufügen des Schrägstrichs (denke ich).

Obwohl die erste Regel nicht relevant ist (weil ich direkt zur https Adresse gehe). Das Kommentieren der zweiten Regel hat keine Auswirkung auf das betreffende Problem.

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

Vielen Dank.

2
theyuv

Dies ist eine Art Vermutung, aber wahrscheinlich ein Ergebnis der Webserverkonfiguration. Was Ihr Server wahrscheinlich tut, ist zu sehen, dass die Anfrage die blog URL der Site laden möchte. Es wird ausgecheckt und festgestellt, dass blog ein Verzeichnis ist, das einen Schrägstrich hinzufügt und umleitet. Da der Load Balancer jetzt eine http-Anforderung sendet, leitet der Webserver diese an http weiter. Danach wird die Anfrage an das WordPress-Verzeichnis gesendet und alle Ihre Htaccess- und WordPress-Logik wird aktiviert und stellt die richtigen Informationen/Weiterleitungen usw. bereit.

Lösung ... wenn dies nicht nur eine gute, sondern auch eine echte Geschichte ist, sollte sie wahrscheinlich durch eine Umleitung von http zu https in einem htaccess des Stammverzeichnisses behoben werden.

Wenn es das Problem tatsächlich behebt (und Sie glauben, dass die Behebung Ihre Zeit wert ist), sollten Sie erwägen, den "wordpress" -Htaccess in den Root-zu verschmelzen, da Apache bei jeder Anforderung den gesamten htaccess in jedem Verzeichnis in der Hierarchie liest und "ausführt "die, die eine sinnlose Zeitverschwendung ist.

1
Mark Kaplun

Sie müssen die Baseurls in Ihrer Datenbank aktualisieren. Das sind die Optionswerte für siteurl und home in der Optionstabelle.

Der folgende Code erledigt das zuverlässig für Sie. Achten Sie auf das Präfix "wp_", das ich hier angegeben habe, aber das sollte es 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');
0
mayersdesign

Versuchen Sie dies in Ihrer .htaccess-Datei

<IfModule mod_rewrite.c>
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]
</IfModule>

Mal sehen, ob es hilft

0
JItendra Rana

Sie sollten WordPress-Dateien nicht selbst bearbeiten müssen. WordPress kann entweder mit http oder https verwendet werden, ohne dass der Code manuell geändert werden muss.

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

  1. Stellen Sie sicher, dass Ihr Blog über http und https zugänglich ist. Wechseln Sie dann zu Ihren WordPress-Einstellungen im Backend und aktualisieren Sie einfach die Blog-URL von http://example.org zu https://example.org WordPress sollte die Datenbank und die .htaccess-Datei selbst aktualisieren

  2. sie können in der Datenbank suchen und ersetzen. Dazu müssen Sie serialisierte Daten kennen, die mit einem einfachen Search & Replace-Vorgang nicht erkannt werden. Ich schlage vor, Sie verwenden ein Tool wie aus Interconnect

Stellen Sie sicher, dass Ihre wp-config.php keine fest codierte URL enthält ( siehe "Ändern der Site-URL" ), die Ihre Änderungen erneut überschreibt.

0
Felix