Mover um WP Multisite para um subdiretório

18

Em primeiro lugar, tenho read um número de posts neste processo. No entanto, por várias razões, o processo continua a ser difícil de implementar ou solucionar problemas por falta de exemplos ainda abstraídos, ou talvez muito abstraído. E há alguns posts "não pode fazer", quase sempre seguidos por "com 3.5, você agora pode" advertências, então se alguém pode permanecer ambíguo, embora sem dúvida não seja trivial.

Resumo:

Como mover um multisite wordpress (WPMS) de root.com para root / blogs?

Para este exemplo, estamos movendo um WPMS de "root.com" para "root.com/blogs"

Eu entendo que preciso atualizar os caminhos no banco de dados e wp-config.php apropriadamente. Parece que eu também tenho que atualizar o .htaccess? Também estou ciente do problema de serialização com as atualizações de consulta search / replace e mysql.

Eu tenho um WPMS que atualizei para o 3.5. Eu encontrei as seguintes tabelas com informações de domínio e caminho

Configuração de trabalho existente antes de passar para o subdiretório

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. O blog_id corresponde às tabelas de opções wp _ # _ que contêm:

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. No meu wp-config.php eu tenho as seguintes linhas específicas do 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. Por último, no meu .htaccess , tenho:

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]

Atualizações necessárias para mover o site

Parece-me que, para mover meu site para os / blogs, gostaria de:

1. Atualize wp_blogs para

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. Atualize wp_site para

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 _ # _ opções

+-------------+--------------------------------+
| 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 );

nota: não estou claro como essa etapa é atualizada adequadamente

5. .htaccess

Eu encontrei instruções vagas de "atualização .htaccess apropriadamente", mas não específicas. Atualizar RewriteBase? Quais linhas em .htaccess eu atualizo quando movo root.com para root.com/blogs?

Faltando o processo acima, os caminhos serão encontrados nas postagens. Meus druthers devem usar a ferramenta de busca e substituição para isso, depois que eu fizer essas atualizações mais fundamentais; ou estou errado?

Atualizar bungeshea sugere que, sim, eu aponte RewriteBase para os "blogs "subdiretório, ou seja,

RewriteBase /Blogs

Finalmente, se você não sabe sobre enlace , você deve. É excelente.

    
por Screenack 21.12.2012 / 20:28

4 respostas

4

Eu sei que é velho, mas eu consertei! Eu instalei o WP MU em uma subpasta. 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);

e no seu banco de dados, modifique isso:

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)
    
por nicmare 03.06.2015 / 16:06
2

Parece-me que você resolveu seu próprio problema - basta seguir as etapas de 1 a 4 e, na etapa 5, atualizar o RewriteBase em .htaccess . Para atualizar os caminhos nos posts, eu gosto de usar o Interconnect IT sterilized search-and-replace .

    
por shea 28.12.2012 / 08:09
1

Ok, aqui está o que eu fiz e isso funcionou. Nenhuma subpasta. O site foi configurado anteriormente para o subdomínio.

BACKUP PRIMEIRO !!!

wp-config.php (substitua este bloco pelo bloco no seu arquivo)

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]

agora no banco de dados SQL:

1) para cada wp_ (site #) _ tablesuffix vá para a tabela de opções e altere siteurl e home para http://www.sitename.com/blogname

2) wp_blogs para cada blog_id alteram o domínio de blogname.domain.com para domain.com e o caminho para /blogname/

3) não há necessidade de alterar o wp_options siteurl & home ou qualquer célula em wp_site ou wp_sitemeta se a instalação estiver no mesmo local.

Depois de concluir, certifique-se de ir para (no painel de administração do superusuário) configurações > permalinks e clique em salvar.

Voila!

    
por hot_barbara 20.11.2015 / 20:03
0

Esta é a minha primeira resposta, então, por favor, seja atencioso! :)

Eu NÃO tinha um blog que já estava em subdomínios para ser convertido. Mas eu tive que lutar porque era um blog antigo e eles não me deixam fazer um subdiretório no blog e temia que o WP fizesse alterações no meu banco de dados quando eles me fornecessem os códigos para colocar.

Isso é o que funcionou para mim em abril de 2018, pessoal ... Eu usei o wp-config do hot_barbara e usei o .htaccess também deles.

Portanto, por favor, não vá para uma subpasta - eu não fiz!

NO ENTANTO, no SQL DB, foi o que aconteceu no meu caso - já era tudo assim, então eu não fiz nenhuma alteração:

  1. wp_site domínio: xyzabc.com caminho: /

wp_blogs domínio: xyzabc.com caminho: /

wp_sitemeta siteurl: h ** ps: //xyzabc.com/

Você iria, como eu entendo, estar usando uma barra final se você tivesse em suas configurações.

    
por Ebe 05.05.2018 / 21:16