Tout d'abord, j'ai lu un certain nombre de messages sur ce processus. Cependant, pour diverses raisons, le processus reste difficile à mettre en œuvre ou à dépanner faute d'exemples même abstraits, ou peut-être trop abstraits. Et il y a quelques messages "ne peut pas faire", presque toujours suivis de "avec 3.5, vous pouvez maintenant" des mises en garde, donc si on peut rester ambigu, bien que sans doute non trivial.
Sommaire:
Comment déplacer un wordpress multisite (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 d'accès dans la base de données et wp-config.php de manière appropriée. Il semble que je doive également mettre à jour .htaccess? Je suis également au courant du problème de sérialisation avec les mises à jour de recherche / remplacement et de requête mysql.
J'ai un WPMS que j'ai mis à jour en 3.5. J'ai trouvé les tableaux suivants avec les informations de domaine et de chemin
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 spécifiques à WPMS suivantes:
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 nécessaires pour déplacer le site
Il me semble que pour déplacer mon site vers les / blogs, je voudrais:
1. Mettez à jour wp_blogs vers
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 vers
update wp_site set domain=concat(domain, '/blogs'), path=concat(path, 'blogs/');
select * from wp_site;
+----+-------------+------------+
| id | domain | path |
+----+-------------+------------+
| 1 | root.com | /blogs/ |
+----+-------------+------------+
3. Options 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 );
note: je ne sais pas comment cette étape est correctement mise à jour
5. .htaccess
J'ai trouvé de vagues instructions de "mise à jour .htaccess appropriée", mais pas de détails. Mettre à jour RewriteBase? Quelles lignes .htaccess mettre à jour lorsque je déplace root.com vers root.com/blogs?
Les chemins trouvés dans les publications manqueront au processus ci-dessus. Mes druthers doivent utiliser l'outil de recherche et de remplacement pour cela, après avoir effectué ces mises à jour plus fondamentales; ou ai-je tort?
Update bungeshea suggère que, oui, je pointe RewriteBase vers le sous-répertoire "blogs", c'est-à-dire,
RewriteBase /Blogs
Enfin, si vous ne connaissez pas http://interconnectit.com/products/search-and-replace-for-wordpress-databases/, vous devriez. C'est excellent.
update wp_blogs set domain=concat(domain, '/blogs'), path=concat(path, 'blogs/');
devraient plutôt êtreupdate wp_blogs set path=concat('/blogs',path);
Réponses:
Je sais que c'est vieux mais je l'ai réparé! j'ai installé WP MU dans un sous-dossier.
htaccess
:wp-config.php
:et dans votre base de données, modifiez ceci:
la source
Il me semble que si vous avez résolu votre problème - il suffit de suivre vos étapes 1-4, et pour l' étape 5 mise à jour le
RewriteBase
dans.htaccess
. Pour mettre à jour les chemins d'accès dans les publications, j'aime utiliser l' outil de recherche et de remplacement stérilisé Interconnect IT .la source
RewriteBase /blog
wp-admin
Ok, voici ce que j'ai fait et cela a fonctionné. Pas de sous-dossier. Le site était précédemment configuré pour un sous-domaine.
SAUVEGARDE D'ABORD !!!
wp-config.php (remplacez ce bloc par le bloc de votre fichier)
.htaccess
maintenant dans la base de données SQL:
1) pour chaque wp_ (site #) _ tablesuffix allez dans le tableau des options et changez siteurl et home en
http://www.sitename.com/blogname
2) wp_blogs pour chaque changement blog_id le domaine à partir
blogname.domain.com
dedomain.com
et le chemin de/blogname/
3) pas besoin de changer wp_options siteurl & home ou toute cellule dans wp_site ou wp_sitemeta si l'installation est au même endroit.
Une fois que vous avez terminé, assurez-vous d'aller dans (dans le panneau d'administration du superutilisateur) paramètres> permaliens et cliquez sur enregistrer.
Voila!
la source
Ceci est ma première réponse, alors soyez prévenant! :)
Je n'avais PAS de blog qui était déjà dans des sous-domaines à convertir. Mais j'ai dû me battre parce que c'était un vieux blog et ils ne me laissaient pas créer un blog de sous-répertoire et je craignais que WP n'apporte des modifications à ma base de données au moment où ils me donnaient les codes à insérer.
C'est ce qui a fonctionné pour moi en avril 2018 ... J'ai utilisé le wp-config de hot_barbara et j'ai également utilisé le .htaccess.
Par conséquent, n'allez pas pour un sous-dossier - je ne l'ai pas fait!
CEPENDANT, dans SQL DB, c'est ce qui s'est passé dans mon cas - tout était déjà ainsi, je n'ai donc apporté aucune modification:
domaine wp_blogs: chemin xyzabc.com: /
wp_sitemeta siteurl: h ** ps: //xyzabc.com/
Si je comprends bien, vous utiliseriez une barre oblique si vous l'aviez dans vos paramètres.
la source
Réécrivez votre
wp-config.php
avec ce codeau lieu de
define('SUBDOMAIN_INSTALL', true);
ensuite aller à:
ensuite:
Ajoutez ce qui suit à votre fichier .htaccess dans /var/www/vhosts/website.com/, en remplaçant les autres règles WordPress:
C'est ça.
la source