四岁没人回答?我们开始吧…-
让我们以以下网络设置为例(我使用的是WP-CLIsite list command):
$ wp site list
+---------+--------------------+---------------------+---------------------+
| blog_id | url | last_updated | registered |
+---------+--------------------+---------------------+---------------------+
| 1 | http://wp.tmp/ | 2016-08-04 08:39:35 | 2016-07-22 09:25:42 |
| 2 | http://foo.wp.tmp/ | 2016-07-22 09:28:16 | 2016-07-22 09:28:16 |
+---------+--------------------+---------------------+---------------------+
网络站点列表如下所示:
我们要使用ID为的站点
2
作为URL为的新根站点
http://wp.tmp/
. 这实际上与问题中描述的问题相同,只是ID和URL的一些其他值。
的多站点相关部分wp-config.php
可能是这样的:
const MULTISITE = TRUE;
const DOMAIN_CURRENT_SITE = \'wp.tmp\';
const PATH_CURRENT_SITE = \'/\';
const SITE_ID_CURRENT_SITE = 1;
const BLOG_ID_CURRENT_SITE = 1;
const SUBDOMAIN_INSTALL = TRUE;
更新数据库站点设置WordPress使用这些表
wp_*_option
和
wp_blogs
为给定的请求URL查找匹配的日志,并为此日志构建适当的永久链接。因此,我们必须更改以下三个表中的值(对于本例):
英寸wp_options
钥匙home
和siteurl
英寸wp_2_options
钥匙home
和siteurl
(在您的情况下wp_15_options
)英寸wp_blogs
“列”domain
对于ID为的两个站点1
和2
(分别为15
)我使用Adminer来完成这项工作,但任何其他数据库管理工具(PhpMyAdmin)也可以完成这项工作。(截图显示了德语的GUI,但我想想法很清楚。)
在里面
wp_options
(站点ID的选项表
1
) 我更改了两个键的值
home
和
siteurl
从…起
http://wp.tmp
到
http://foo.wp.tmp
. (上面的屏幕截图显示了更新前的状态。)
我对桌子也做了同样的事wp_2_options
但这里我改变了http://foo.wp.tmp
到http://wp.tmp
.
下一步是更新表wp_blogs
:
(同样,屏幕截图显示了我进行任何更改之前的表格。)在这里,您只需在domain
列:
wp.tmp
成为foo.wp.tmp
和foo.wp.tmp
成为wp.tmp
现在您必须更新
wp-config.php
要正确处理新设置数据,请执行以下操作:
const MULTISITE = TRUE;
const DOMAIN_CURRENT_SITE = \'wp.tmp\';
const PATH_CURRENT_SITE = \'/\';
const SITE_ID_CURRENT_SITE = 1;
const BLOG_ID_CURRENT_SITE = 2; // This is the new root site ID
const SUBDOMAIN_INSTALL = TRUE;
此时,您又有了一个工作的WordPress多站点,但有一个新的根站点:
$ wp site list
+---------+--------------------+---------------------+---------------------+
| blog_id | url | last_updated | registered |
+---------+--------------------+---------------------+---------------------+
| 1 | http://foo.wp.tmp/ | 2016-08-04 08:39:35 | 2016-07-22 09:25:42 |
| 2 | http://wp.tmp/ | 2016-07-22 09:28:16 | 2016-07-22 09:28:16 |
+---------+--------------------+---------------------+---------------------+
请记住:在此过程中,您的站点将不可用,请求将以一些严重错误告终,因此您可能需要安排
503 Service Unavailable
在WordPress安装之前进行响应。这是可以做到的
using .htaccess
.
更新数据库内容现在是棘手的部分。目前,内容表中的所有URL仍然指向旧站点的资源。但更换它们并不是那么容易:更换每个http://foo.wp.tmp
具有http://wp.tmp
在第一步中http://wp.tmp
具有http://foo.wp.tmp
在下一步中,将最终使所有以前的URL指向站点ID 1(http://foo.wp.tmp
).
最好的方法是插入一个中间步骤:
搜索http://foo.wp.tmp
并将其替换为一种最好是独特的弹头:http://3a4b522a.wp.tmp
搜索http://wp.tmp
并将其替换为http://foo.wp.tmp
搜索http://3a4b522a.wp.tmp
并将其替换为http://wp.tmp
所有这些搜索和替换命令都应忽略这三个表(
*_options
*_blogs
) 我们以前更新过,否则他们会破坏配置。您还可以在中手动查找URL
wp_*_options
表外部
home
和
siteurl
钥匙。
我建议使用WP-CLIsearch-replace command 因为它可以处理序列化数据,并且没有HTTP可能具有的限制。