将WP多站点移动到子目录

时间:2012-12-21 作者:Screenack

首先,我read a number 此流程上的帖子数。然而,由于各种原因,该过程仍然很难实现或排除故障,因为甚至缺乏抽象的示例,或者可能过于抽象。还有一些“做不到”的帖子,后面几乎总是跟着“with 3.5,you now can”的警告,所以一个人是否可以仍然模棱两可,尽管毫无疑问这很重要。

总结:如何从根目录移动wordpress多站点(WPMS)。com到根目录/博客?

在本例中,我们将WPMS从“root.com”移动到“root.com/blogs”

我知道我需要更新数据库和wp config中的路径。php。看来我还得更新一下。htaccess?我也知道搜索/替换和mysql查询更新的序列化问题。

我有一个WPMS,我已经更新到3.5。我找到了包含域和路径信息的下表

移动到子目录

1之前的现有工作配置。wp\\U博客

select blog_id, domain, path from wp_blogs;
+---------+-------------+--------+
| blog_id | domain      | path   |
+---------+-------------+--------+
|       1 | root.com    | /      |
|       2 | root.com    | /matt/ |
+---------+-------------+--------+

2。wp\\U站点

select * in wp_site;
+----+-------------+------+
| id | domain      | path |
+----+-------------+------+
|  1 | root.com    | /    |
+----+-------------+------+

3。blog\\u id对应于包含以下内容的wp\\uu#\\u选项表:

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=$2 [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(.*\\.php)$ $1 [L]
RewriteRule . index.php [L]
移动网站所需的更新在我看来,为了将我的网站移动到/博客,我会:

1。更新wp\\u博客至

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\\U站点更新为

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\\u#\\ u选项

+-------------+--------------------------------+
| option_name | option_value                   |
+-------------+--------------------------------+
| home        | http://root.com/blogs/matt/    |
| siteurl     | http://root.com/blogs/matt/    |
+-------------+--------------------------------+

4。wp\\U配置。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 );
note: 我不清楚这个步骤是如何适当更新的

5。我找到了含糊不清的“适当更新.htaccess”说明,但没有具体说明。是否更新RewriteBase?哪些行输入。htaccess在移动根目录时更新。com到根目录。com/博客?

上述过程中缺少的是在帖子中找到的路径。在我进行了更基本的更新之后,我的任务是使用搜索和替换工具;还是我错了?

更新bungeshea 建议,是的,我将RewriteBase指向“blogs”子目录,即。,

RewriteBase /Blogs
最后,如果你不知道http://interconnectit.com/products/search-and-replace-for-wordpress-databases/ 你应该这样做。太棒了。

5 个回复
SO网友:nicmare

我知道它很旧,但我已经修好了!我在子文件夹中安装了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$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\\.php)$ $2 [L]
RewriteRule ^(.*\\.php)$ YOUR_SUBFOLDER/$1 [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)

SO网友:shea

在我看来,您似乎已经解决了自己的问题-只需按照步骤1-4进行操作,对于步骤5,请更新RewriteBase 在里面.htaccess. 为了更新帖子中的路径,我喜欢使用Interconnect IT sterilized search-and-replace 工具

SO网友:hot_barbara

好的,这就是我所做的,这很有效。没有子文件夹。站点以前配置为子域。

先备份!!!

wp配置。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$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\\.php)$ $2 [L]
RewriteRule . index.php [L]
现在在SQL DB中:

1) 对于每个wp\\uu(site#)\\u tablesuffix,请转到选项表并将siteurl和home更改为http://www.sitename.com/blogname

2) wp\\u blogs for each blog\\u id更改域blogname.domain.comdomain.com 和路径/blogname/

3) 无需更改wp\\U选项站点URL(&U);主页或wp\\U site或wp\\U sitemeta中的任何单元格(如果安装在同一位置)。

完成后,请确保转到(在超级用户管理面板中)设置>永久链接,然后单击保存。

瞧!

SO网友:Ebe

这是我的第一个答案,所以请考虑一下!:)

我没有一个已经在要转换的子域中的博客。但我不得不反抗,因为这是一个旧博客,他们不允许我创建子目录博客,我担心WP在给我输入代码时对我的DB进行了更改。

这就是我在2018年4月的表现伙计们。。。我使用了hot\\u barbara的wp配置,并使用了。htaccess也来自他们。

因此,请不要选择子文件夹-我没有!

然而,在SQL DB中,我的情况就是这样-这已经是这样了,所以我没有做任何更改:

wp\\U站点域:xyzabc。兼容性://li>wp\\u blogsdomain:xyzabc。兼容性:/

wp\\U sitemetasiteurl:h**ps://xyzabc。com/

正如我所理解的,如果设置中有尾随斜杠,那么您将使用尾随斜杠。

SO网友:Amran

重写您的wp-config.php 使用此代码

define(\'SUBDOMAIN_INSTALL\', false);
而不是define(\'SUBDOMAIN_INSTALL\', true);

然后转到:

http://www.website.com/wp-admin/network/setup.php
然后:

将以下内容添加到。htaccess文件位于/var/www/vhosts/website。com/,替换其他WordPress规则:

RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\\.php)$ $2 [L]
RewriteRule . index.php [L]
就是这样。

使用子目录创建新站点

结束