web-dev-qa-db-ja.com

HTTPとHTTPSが混在するサイトでWordpressマルチサイトを使用する方法

私は5つのサイトを持つマルチワードプレスインストール(3.x)を持っていて、それらの1つだけがSSLを使用しています。

これらはすべて自分のドメイン上で実行されており、 http://ssldomain.comhttps://ssldomain.com に転送されます。

それでも、これはワードプレスのアップグレードを中断するようです。

今私はメッセージを受け取ります:

ネットワークをアップグレードする

https://nonsecureddomain.com

警告! https://nonsecureddomain.com の更新中に問題が発生しました。ご使用のサーバーは、それを実行しているサイトに接続できない可能性があります。エラーメッセージ:SSL:ターゲットホスト名 'nonsecureddomain.com'に一致する代替証明書サブジェクト名がありません

ある時点でWPはこのドメインのためにHTTPSに行くことにしましたが、そうではありませんでした。

ネットワーク自体はHTTPS(SSL)上で実行されているものであり、私にとって心配なのはそれが

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

設定可能と思われるハードコードされたHTTPSプレフィックスを使用してサイトを一覧表示していますか?

enter image description here

5
sorin

これは古い質問ですが、私はこの問題に対処しなければならなかったので私は自分の答えを投稿し、それが私のために働くようになった一時的な回避策を考え出したと思いました。

警告:これにはコアの修正が必要ですが、これはお勧めできません。この回避策を使用する場合は、アップデートが終了したらおそらく回避策を削除する必要があります。

WP 4.1以降、問題は/wp-admin/network/upgrade.phpの67行目にあります。ここで、$upgrade_urlwp_remote_get()に渡されています。しかし$upgrade_urlはあなたの現在のページからSSLの合図を得ています。したがって、現在のページがHTTPSの場合は、アップグレードされるすべてのサイトにHTTPSが採用されますが、それらのサイトがHTTPSであるとは想定されていなくてもです。

さて、コードから、$upgrade_urlをHTTPSからHTTPに変更するためにadmin_url()をフィルタリングできるはずです。しかし、私がこのフィルタを試したとき、それはうまくいきませんでした。だから私がやらなければならなかったのは、67行目のwp_remote_get()の直前に次のコードを挿入することでした。

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

誰かに役立つことを願っています。

2
Sam

Tracを投稿してくれた@Sorinに感謝します。そこから私はfunctions.phpのフィルタだけを使った解決策を見つけました(だからコアを編集しないでください)

投稿してくれてありがとう@mensmaximus:

リンク: 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

これは現在既知のバグであり、すでにレビュー用にパッチが送信されています。発生したバグに直接フィードバックを追加してください。

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

1
sorin