J'ai une installation multi-wordpress (3.x) avec 5 sites et un seul utilise SSL.
Tous ces éléments fonctionnent sur leur propre domaine, et le http://ssldomain.com est transféré à https://ssldomain.com .
Pourtant, cela semble casser les mises à jour de wordpress.
Maintenant je reçois un message:
Mise à niveau du réseau
Attention! Problème de mise à jour https://nonsecureddomain.com . Votre serveur peut ne pas être en mesure de se connecter aux sites qui y sont exécutés. Message d'erreur: SSL: aucun nom de sujet de certificat alternatif ne correspond au nom d'hôte cible 'non dominé par domaine.com'
Il semble qu’à un moment donné, WP décide d’utiliser le protocole HTTPS pour ce domaine, où il n’est pas censé le faire.
Le réseau lui-même est celui qui fonctionne sur HTTPS (SSL), et ce qui me préoccupe, c’est que
https://mydecureddomain.com/wp-admin/network/site-info.php?id=5
La liste du site avec un préfixe HTTPS codé en dur qui semble être configurable?
C’est une vieille question, mais j’ai pensé que je posterais ma réponse, car j’avais juste à faire face à ce problème et à une solution de contournement temporaire qui l’a fait fonctionner pour moi.
AVERTISSEMENT: Cela nécessite de modifier le noyau, ce qui n'est PAS recommandé. Si vous utilisez cette solution de contournement, vous devez probablement supprimer cette solution une fois la mise à jour terminée.
Depuis WP 4.1, le problème existe dans la ligne 67 de /wp-admin/network/upgrade.php. Ici, $upgrade_url
est transmis à wp_remote_get()
. Mais $upgrade_url
obtient ses signaux SSL de votre page actuelle. Par conséquent, si votre page actuelle est HTTPS, il adoptera HTTPS pour tous les sites en cours de mise à niveau, même si ces sites ne sont pas supposés être HTTPS.
Maintenant, à partir du code, il semble que vous devriez pouvoir filtrer admin_url()
afin de changer $upgrade_url
de HTTPS à HTTP. Cependant, lorsque j'ai essayé ce filtre, cela n'a pas fonctionné. J'ai donc dû insérer le code suivant juste avant wp_remote_get()
à la ligne 67:
if( strpos( $url, $your_ssl_domain ) === false )
$upgrade_url = str_replace( 'https', 'http', $upgrade_url );
J'espère que ça aide quelqu'un.
Merci à @Sorin d'avoir posté le trac. À partir de là, j'ai trouvé une solution utilisant uniquement des filtres dans functions.php (donc pas d'édition du noyau)
Merci @mensmaximus pour avoir posté ici:
Lien: 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;
}
C'est actuellement un bogue connu et un correctif a déjà été soumis pour révision. N'hésitez pas à ajouter vos commentaires directement au bogue soulevé: