Déplacement d'un site multisite WP vers un sous-répertoire

18

Tout d'abord, j'ai read un certain nombre de messages sur ce processus. Toutefois, pour diverses raisons, le processus reste difficile à mettre en œuvre ou à résoudre, faute d’exemples, même abstraits, voire trop abstraits. Et il y a quelques messages "ne peut pas faire", suivis presque toujours par des mises en garde avec "avec 3.5, vous pouvez maintenant", donc si on peut rester ambigu, bien que sans aucun doute non-trivial.

Résumé:

Comment déplacer un multisite wordpress (WPMS) de root.com vers root / blogs?

Pour cet exemple, nous déplaçons un WPMS de "root.com" vers "root.com/blogs"

Je comprends que je dois mettre à jour les chemins de la base de données et le fichier wp-config.php de manière appropriée. Il semble que je devrais peut-être aussi mettre à jour .htaccess? Je suis également conscient du problème de sérialisation lié aux mises à jour des requêtes search / replace et mysql.

J'ai un WPMS que j'ai mis à jour en 3.5. J'ai trouvé les tables suivantes avec les informations de domaine et de chemin d'accès

Configuration de travail existante avant de passer au sous-répertoire

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. Le blog_id correspond aux tables d'options wp _ # _ qui contiennent:

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. Dans mon wp-config.php , j'ai les lignes suivantes spécifiques à 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. Enfin, dans mon .htaccess , j'ai:

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]

Mises à jour requises pour déplacer le site

Il me semble que pour déplacer mon site sur les / blogs, je voudrais:

1. Mettre à jour wp_blogs sur

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. Mettez à jour wp_site sur

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

remarque: je ne vois pas comment cette étape est mise à jour de manière appropriée

.

5. .htaccess

J'ai trouvé des instructions vagues "Mise à jour .htaccess", mais pas de détails. Mettre à jour RewriteBase? Quelles lignes de .htaccess je mets à jour lorsque je déplace root.com vers root.com/blogs?

Le processus ci-dessus manquera aux chemins trouvés dans les publications. Mes collaborateurs doivent utiliser l'outil de recherche et de remplacement pour cela, après avoir effectué ces mises à jour plus fondamentales. ou est-ce que je me trompe?

Mise à jour bungeshea suggère que, oui, je renvoie RewriteBase aux "blogs". "sous-répertoire, c.-à-d.

RewriteBase /Blogs

Enfin, si vous ne connaissez pas les enlace , vous devriez le faire. C'est excellent.

    
posée Screenack 21.12.2012 - 20:28

4 réponses

4

Je sais que c'est vieux mais je l'ai réparé! J'ai installé WP MU dans un sous-dossier. 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);

et dans votre base de données, modifiez ceci:

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)
    
réponse donnée nicmare 03.06.2015 - 16:06
2

Il me semble que vous avez résolu votre propre problème - suivez simplement les étapes 1 à 4 et, pour l’étape 5, mettez à jour le RewriteBase dans .htaccess . Pour mettre à jour les chemins dans les publications, j'aime bien utiliser la Interconnecter la recherche-remplacement stérilisée outil.

    
réponse donnée shea 28.12.2012 - 08:09
1

Ok, voici ce que j'ai fait et cela a fonctionné. Aucun sous-dossier. Le site a été précédemment configuré pour le sous-domaine.

Sauvegardez d'abord !!!

wp-config.php (remplacez ce bloc par le bloc de votre fichier)

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]

maintenant dans la base de données SQL:

1) pour chaque wp_ (site #) _ tablesuffix, accédez à la table d'options et remplacez siteurl et home par http://www.sitename.com/blogname

2) wp_blogs pour chaque blog_id fait passer le domaine de blogname.domain.com à domain.com et le chemin d'accès à /blogname/

3) pas besoin de changer wp_options siteurl & home ou n'importe quelle cellule dans wp_site ou wp_sitemeta si l'installation est au même endroit.

Une fois que vous avez terminé, assurez-vous d'accéder à (dans le panneau d'administration du superutilisateur) les paramètres > permaliens et cliquez sur enregistrer.

Voila!

    
réponse donnée hot_barbara 20.11.2015 - 20:03
0

C’est ma première réponse, soyez donc attentionné! :)

Je n'ai PAS eu de blog qui était déjà dans des sous-domaines à convertir. Mais je devais me battre parce que c’était un vieux blog et ils ne me laisseraient pas faire un blog de sous-répertoire et je craignais que WP modifie ma base de données au moment où ils m’ont donné les codes à mettre.

C'est ce qui a fonctionné pour moi en avril 2018, les gars ... J'ai utilisé wp-config de hot_barbara et le .htaccess également.

Par conséquent, n'allez pas chercher un sous-dossier - je ne l'ai pas fait!

TOUJOURS, dans SQL DB, voici ce qui s’est passé dans mon cas - c’était déjà déjà comme ça, donc je n’ai apporté aucune modification:

  1. wp_site domaine: xyzabc.com chemin: /

wp_blogs domaine: xyzabc.com chemin: /

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

Si j'ai bien compris, vous utiliseriez une barre oblique finale si vous l'aviez dans vos paramètres.

    
réponse donnée Ebe 05.05.2018 - 21:16

Lire d'autres questions sur les étiquettes