如何将Wordpress MultiSite与混合的HTTP和HTTPS站点一起使用?

时间:2014-08-03 作者:sorin

我有一个多wordpress安装(3.x),有5个站点,其中只有一个使用SSL。

所有这些都在自己的域上运行http://ssldomain.com 转发至https://ssldomain.com.

不过,这似乎打破了wordpress的升级。

现在我得到一条消息:

升级网络

https://nonsecureddomain.com

警告更新时出现问题https://nonsecureddomain.com. 您的服务器可能无法连接到其上运行的站点。错误消息:SSL:没有其他证书使用者名称与目标主机名“非安全域”匹配。com\'

似乎在某个时候,WP决定在这个域中使用HTTPS,而这是不应该的。

网络本身是在HTTPS(SSL)上运行的,我关心的是

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

是否列出了带有硬编码HTTPS前缀的站点,该前缀似乎是可配置的?

enter image description here

4 个回复
SO网友:raison

感谢@Sorin发布trac。从那里,我找到了一个只在函数中使用过滤器的解决方案。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;
}

SO网友:Sam

这是一个老问题,但我想我应该发布我的答案,因为我必须处理这个问题,并找到一个临时解决方法,让它对我有用。

警告:这需要修改旧件,不建议修改旧件。如果使用此变通方法,则可能应该在完成更新后删除该变通方法。

从WP 4.1开始,/WP admin/network/upgrade中存在问题。php第67行。在这里$upgrade_url 正在传递给wp_remote_get(). 但是$upgrade_url 正在从当前页面获取其SSL提示。因此,如果您当前的页面是HTTPS,那么它将对所有正在升级的站点采用HTTPS,即使这些站点不应该是HTTPS。

现在,从代码来看,您应该能够过滤admin_url() 为了改变$upgrade_url 从HTTPS到HTTP。然而,当我尝试这个过滤器时,它不起作用。因此,我最终要做的是在之前插入以下代码wp_remote_get() 第67行:

if( strpos( $url, $your_ssl_domain ) === false )
    $upgrade_url = str_replace( \'https\', \'http\', $upgrade_url );
希望这能帮助别人。

SO网友:sorin

这是目前已知的错误,并且已经提交了一个补丁供审查。请随时将您的反馈直接添加到提出的bug中:

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

SO网友:Bikram Pahi

我们可以用非常简单的方式添加https。。。。不需要在任何钩子中编写所有这些代码。。。。

登录wordpress管理员,进入设置>常规,找到wordpress地址(URL)并用HTTPS替换HTTP,找到站点地址(URL)并用HTTPS替换HTTP,单击保存更改。htaccess文件并添加以下代码

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^huepixel\\.com$ [NC]
RewriteRule ^ https://www.your domain.com%{REQUEST_URI} [L,R=301]
安装wordpress-https 插件并配置它。。。。

仅此而已

对于多站点,您可以进行相应的配置。

结束