wake-up-neo.com

Wie verwende ich Wordpress Multisite mit gemischten HTTP- und HTTPS-Sites?

Ich habe eine Multi-WordPress-Installation (3.x) mit 5 Standorten und nur einer von ihnen verwendet SSL.

Alle diese laufen auf einer eigenen Domain und die http://ssldomain.com leitet an https://ssldomain.com weiter.

Dennoch scheint dies WordPress-Upgrades zu brechen.

Jetzt bekomme ich eine Nachricht:

Netzwerk aktualisieren

https://nonsecureddomain.com

Warnung! Problem beim Aktualisieren von https://nonsecureddomain.com . Ihr Server kann möglicherweise keine Verbindung zu Sites herstellen, die auf ihm ausgeführt werden. Fehlermeldung: SSL: Kein alternativer Name des Zertifikatsbetreffs stimmt mit dem Hostnamen "nonsecureddomain.com" überein

Anscheinend entscheidet sich WP irgendwann für HTTPS für diese Domain, wo dies nicht vorgesehen ist.

Das Netzwerk selbst ist das mit HTTPS (SSL), und was mich betrifft, ist das

https://mydecureddomain.com/wp-admin/network/site-info.php?id=5

Wird die Site mit einem fest codierten HTTPS-Präfix aufgelistet, das konfigurierbar zu sein scheint?

enter image description here

5
sorin

Dies ist eine alte Frage, aber ich dachte, ich würde meine Antwort posten, da ich mich nur mit diesem Problem befassen musste, und fand eine vorübergehende Problemumgehung, die es für mich zum Laufen brachte.

WARNUNG: Dies erfordert eine Änderung des Kerns, die NICHT empfohlen wird. Wenn Sie diese Problemumgehung verwenden, sollten Sie die Problemumgehung wahrscheinlich entfernen, wenn Sie die Aktualisierung abgeschlossen haben.

Ab WP 4.1 liegt das Problem in /wp-admin/network/upgrade.php Zeile 67 vor. Hier wird $upgrade_url an wp_remote_get() übergeben. Aber $upgrade_url bezieht seine SSL-Hinweise von Ihrer aktuellen Seite. Wenn es sich bei Ihrer aktuellen Seite also um HTTPS handelt, wird HTTPS für alle zu aktualisierenden Websites übernommen, auch wenn es sich bei diesen Websites nicht um HTTPS handeln soll.

Aus dem Code geht hervor, dass Sie in der Lage sein sollten, admin_url() zu filtern, um $upgrade_url von HTTPS in HTTP zu ändern. Als ich diesen Filter ausprobierte, funktionierte er jedoch nicht. Also musste ich kurz vor wp_remote_get() in Zeile 67 den folgenden Code einfügen:

if( strpos( $url, $your_ssl_domain ) === false )
    $upgrade_url = str_replace( 'https', 'http', $upgrade_url );

Hoffe das hilft jemandem.

2
Sam

Vielen Dank an @Sorin für das Posten des Tracs. Von dort fand ich eine Lösung mit nur Filtern in functions.php (also keine Bearbeitung des Kerns)

Vielen Dank an @mensmaximus für das Posten dort:

Link: https://core.trac.wordpress.org/ticket/33887#comment:3

<?php
add_filter( 'network_admin_url', 'mmx_network_admin_url', 1, 2 );
function mmx_network_admin_url( $url, $path ){
    $url = "https://my_master_domain/wp-admin/network/" . $path;
    return $url;
}

add_filter( 'admin_url', 'mmx_admin_url', 1, 3 );
function mmx_admin_url( $url, $path, $blog_id ) {
    $blog_id = ( $blog_id ) ? $blog_id : get_current_blog_id();
    if ( preg_match( '|^http(s)?://|', $url) ) {
        $blog_details = get_blog_details( $blog_id );
        $url = $blog_details->siteurl . '/wp-admin/' . $path;
    }
    return $url;
}
1
raison

Dies ist derzeit ein bekannter Fehler und es wurde bereits ein Patch zur Überprüfung eingereicht. Fühlen Sie sich frei, Ihr Feedback direkt zum aufgetretenen Fehler hinzuzufügen:

https://core.trac.wordpress.org/ticket/31405

1
sorin