摘要:
如何从root.com移动wordpress多站点(WPMS)?
对于此示例,我们从“ root.com”移动WPMS到“ root.com/blogs”
我知道我需要适当地更新数据库和wp-config.php中的路径。看来我可能还必须更新.htaccess?我也知道搜索/替换和mysql查询更新的序列化问题。
我有一个WPMS,我已经更新到3.5。在移到子目录
1之前,我发现了以下具有域和路径信息的表
现有的工作配置。 wp_blogs
select blog_id, domain, path from wp_blogs;
+---------+-------------+--------+
| blog_id | domain | path |
+---------+-------------+--------+
| 1 | root.com | / |
| 2 | root.com | /matt/ |
+---------+-------------+--------+
2。 wp_site
select * in wp_site;
+----+-------------+------+
| id | domain | path |
+----+-------------+------+
| 1 | root.com | / |
+----+-------------+------+
3。 blog_id对应于wp _#_ options表,其中包含:
select option_name,option_value from wp_2_options
where option_name = 'home' or option_name = 'siteurl';
+-------------+--------------------------+
| option_name | option_value |
+-------------+--------------------------+
| home | http://root.com/matt/ |
| siteurl | http://root.com/matt/ |
+-------------+--------------------------+
4。在我的wp-config.php中,有以下WPMS特定行:
define('WP_ALLOW_MULTISITE', true);
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false);
$base = '/';
define( 'DOMAIN_CURRENT_SITE', 'root.com' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );
5。最后,在我的.htaccess文件中,我有:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file= [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) [L]
RewriteRule ^[_0-9a-zA-Z-]+/(.*\.php)$ [L]
RewriteRule . index.php [L]
移动站点所需的更新
在我看来,要移动站点我的网站到/ blogs,我将:
1。将wp_blogs更新为
mysql> update wp_blogs set domain=concat(domain, '/blogs'), path=concat(path, 'blogs/');
select blog_id, domain, path from wp_blogs where blog_id < 3;
+---------+-------------+--------------+
| blog_id | domain | path |
+---------+-------------+--------------+
| 1 | root.com | /blogs/ |
| 2 | root.com | /blogs/matt/ |
+---------+-------------+--------------+
2。将wp_site更新到
update wp_site set domain=concat(domain, '/blogs'), path=concat(path, 'blogs/');
select * from wp_site;
+----+-------------+------------+
| id | domain | path |
+----+-------------+------------+
| 1 | root.com | /blogs/ |
+----+-------------+------------+
3。 wp _#_ options
+-------------+--------------------------------+
| option_name | option_value |
+-------------+--------------------------------+
| home | http://root.com/blogs/matt/ |
| siteurl | http://root.com/blogs/matt/ |
+-------------+--------------------------------+
4。 wp_config.php
define('WP_ALLOW_MULTISITE', true);
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false);
$base = '/blogs/';
define( 'DOMAIN_CURRENT_SITE', 'root.com' );
define( 'PATH_CURRENT_SITE', '/blogs/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );
注意:我不清楚如何适当地更新此步骤
5。 .htaccess
我发现模糊的“适当更新.htaccess”说明,但没有具体说明。更新RewriteBase?当我将root.com移至root.com/blogs时,要更新的.htaccess中的哪几行?
上述过程中缺少的是帖子中找到的路径。在做出更基本的更新之后,我的德鲁特人将为此使用搜索和替换工具。还是我错了?
更新bungeshea建议,是的,我将RewriteBase指向“博客”子目录,即
RewriteBase /Blogs
最后,如果您不了解http://interconnectit.com/products/search-and-replace-for-wordpress-databases/,则应该这样做。非常好。
#1 楼
我知道它很旧,但我已将其修复!我在一个子文件夹中安装了WP MU。htaccess
:RewriteEngine On
RewriteBase /YOUR_SUBFOLDER
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ [L]
RewriteRule ^(.*\.php)$ YOUR_SUBFOLDER/ [L]
RewriteRule . index.php [L]
wp-config.php
:define( 'WP_ALLOW_MULTISITE', true );
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'localhost'); // or your host
define('PATH_CURRENT_SITE', '');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
并在您的数据库中修改以下内容:
wp_site
domain: localhost (OR your domain but no subdirectory!)
path: /
wp_blogs
domain: localhost (OR your domain but no subdirectory in each blog_id!)
path: /
wp_sitemeta
siteurl: http://localhost/YOUR_SUBFOLDER (replace localhost with your host)
评论
这是非常有用的。我有一个子域安装以及该站点的数据库转储和zip。我需要将其还原到新服务器上,并且必须手动更新站点。数据库更新是我需要进行的最必要的更新。谢谢!
–雅各布·拉库亚(Jacob Raccuia)
16-10-13在3:56
#2 楼
在我看来,您好像已经解决了自己的问题-只需执行步骤1-4,然后在步骤5中更新RewriteBase
中的.htaccess
即可。为了更新帖子中的路径,我喜欢使用Interconnect IT消毒的搜索和替换工具。评论
谢谢,邦希正如我在帖子中所指出的,按照上面的示例,将RewriteBase更新为确切的内容是什么?会是:RewriteBase / blog吗?
– Screenack
13年1月2日,14:05
是:RewriteBase / blog
–乳木果
13年1月2日在21:41
邦芝完成,但仍然无法正常工作。上述所有之后,仍然显示“建立数据库连接时出错”。更糟糕的是,我的apache错误日志中没有错误。
– Screenack
13年1月4日在17:10
@Screenack“建立数据库连接错误”的细节是什么?提示:访问wp-admin
–乳木果
2013年9月1日下午6:30
#3 楼
好的,这就是我所做的,并且可以正常工作。没有子文件夹。站点先前已配置为子域。首先备份!!!
wp-config.php(将此块替换为文件中的块)
define('WP_ALLOW_MULTISITE', true );
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'no-www-in-sitename.com'); // your host
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
.htaccess
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ [L]
RewriteRule . index.php [L]
现在在SQL DB中:
1)每个wp_( site#)_ tablesuffix转到选项表,并将siteurl更改为
http://www.sitename.com/blogname
2)每个blog_id的wp_blogs将域从
blogname.domain.com
更改为domain.com
,并将路径更改为/blogname/
3 )如果安装位置在同一位置,则无需更改wp_options siteurl和home或wp_site或wp_sitemeta中的任何单元。
完成后,请务必转到(在超级用户管理面板中)设置>永久链接,然后单击保存。
Voila!
评论
博客名称路径中的斜线确实解决了我的问题😬
–埃德加
20-2-4在18:26
#4 楼
这是我的第一个答案,请体谅! :)我没有一个已经在子域中进行转换的博客。但是我不得不打仗,因为这是一个老博客,他们不允许我创建子目录博客,而且我担心WP在给我要输入的代码时会对我的数据库进行更改。
这就是2018年4月对我有用的...我使用了hot_barbara的wp-config,我也使用了它们的.htaccess。
因此,请不要去找一个子文件夹-我没有!
但是,在SQL DB中,这就是我的情况-事情就已经这样了,所以我没有做任何更改:
wp_site
域名:xyzabc.com
路径:/
wp_blogs
域名:xyzabc.com
路径:/
wp_sitemeta
siteurl:h ** ps://xyzabc.com/
-据我了解,如果您在设置中使用了斜杠,则会使用斜杠。
#5 楼
使用此代码重写您的wp-config.php
define('SUBDOMAIN_INSTALL', false);
define('SUBDOMAIN_INSTALL', true);
然后转到:
http://www.website.com/wp-admin/network/setup.php
然后:
将以下内容添加到/var/www/vhosts/website.com/中的.htaccess文件中,以替换其他WordPress规则:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ [L]
RewriteRule . index.php [L]
就这样。
用子目录创建新站点
评论
好问题,好过程+1只有我吗?我认为,该过程中的查询是不正确的更新wp_blogs set domain = concat(domain,'/ blogs'),path = concat(path,'blogs /');应该更新wp_blogs set path = concat('/ blogs',path);