it-swarm.dev

Mover um WP Multisite para um subdiretório

Primeiramente, eu tenho readum número de posts neste processo. Entretanto, por várias razões, o processo continua difícil de implementar ou solucionar problemas por falta de exemplos até mesmo abstratos, ou talvez muito abstraídos). 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 wordpress multisite (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 eu atualizei para 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 wp _ # _ options 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 fim, 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 o 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 o 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. opções wp _ # _

+-------------+--------------------------------+
| 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 esta etapa está apropriadamente atualizada

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 serão os caminhos encontrados em posts. Meus druthers devem usar a ferramenta de busca e substituição para isso, depois que eu fizer essas atualizações mais fundamentais; ou eu estou errado?

Updatebungeshea sugere que, sim, eu aponte RewriteBase para o subdiretório "blogs", ou seja,

RewriteBase /Blogs

Finalmente, se você não sabe sobre http://interconnectit.com/products/search-and-replace-for-wordpress-databases/ você deve. É excelente.

19
Screenack

Eu sei que é velho, mas eu consertei! Eu instalei WP MU em uma subpasta. htaccessname__:

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)
6
nicmare

Parece-me que você resolveu seu próprio problema - apenas siga os passos 1-4 e, para o passo 5, atualize o RewriteBase em .htaccess. Para atualizar os caminhos nos posts, eu gosto de usar a ferramenta Interconnect IT sterilized search-and-replace .

2
shea

Ok, aqui está o que eu fiz e isso funcionou. Nenhuma subpasta. Site previamente configurado para subdomínio.

BACKUP PRIMEIRAMENTE !!!

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 é necessário alterar wp_options siteurl & home ou quaisquer células em wp_site ou wp_sitemeta se a instalação estiver no mesmo local.

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

Voila!

1
hot_barbara

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

Eu DID NÃO tenho 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 temi que WP fizesse alterações no meu banco de dados quando eles me dessem os códigos para colocar.

Isso é o que funcionou pra 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 não fiz nenhuma alteração:

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

domínio wp_blogs: caminho xyzabc.com: /

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

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

0
Ebe

Reescreva seu wp-config.php com este código

define('SUBDOMAIN_INSTALL', false);

em vez de define('SUBDOMAIN_INSTALL', true);

então vá para:

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

então:

Adicione o seguinte ao seu arquivo .htaccess em /var/www/vhosts/website.com/, substituindo outras regras do 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]

É isso aí.

Criar um novo site com subdiretório

0
Amran