Premièrement, j'ai luun certain nombre de messages sur ce processus. Cependant, 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 "avec 3,5, vous pouvez maintenant", des mises en garde, donc si on peut rester ambigu, bien que sans aucun doute non-trivial.
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 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 à 3.5. J'ai trouvé les tables suivantes avec les informations de domaine et de chemin
select blog_id, domain, path from wp_blogs;
+---------+-------------+--------+
| blog_id | domain | path |
+---------+-------------+--------+
| 1 | root.com | / |
| 2 | root.com | /matt/ |
+---------+-------------+--------+
select * in wp_site;
+----+-------------+------+
| id | domain | path |
+----+-------------+------+
| 1 | root.com | / |
+----+-------------+------+
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/ |
+-------------+--------------------------+
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 );
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]
Il me semble que pour déplacer mon site vers les/blogs, je voudrais:
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/ |
+---------+-------------+--------------+
update wp_site set domain=concat(domain, '/blogs'), path=concat(path, 'blogs/');
select * from wp_site;
+----+-------------+------------+
| id | domain | path |
+----+-------------+------------+
| 1 | root.com | /blogs/ |
+----+-------------+------------+
+-------------+--------------------------------+
| option_name | option_value |
+-------------+--------------------------------+
| home | http://root.com/blogs/matt/ |
| siteurl | http://root.com/blogs/matt/ |
+-------------+--------------------------------+
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 vois pas comment cette étape est mise à jour de manière appropriée
J'ai trouvé des instructions vagues de "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 chemin 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 apporté ces mises à jour plus fondamentales. ou ai-je tort?
Updatebungeshea 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.
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)
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 RewriteBase
dans .htaccess
. Pour mettre à jour les chemins dans les publications, j'aime bien utiliser l'outil de recherche-remplacement stérilisé Interconnect IT .
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.
SAUVEZ D'ABORD !!!
wp-config.php (remplace 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 au tableau des 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 en /blogname/
3) nul besoin de changer wp_options siteurl & home ou d’autres cellules de wp_site ou wp_sitemeta si l’installation se trouve au même endroit.
Une fois que vous avez terminé, assurez-vous d'accéder à (dans le panneau d'administration du superutilisateur) paramètres> permaliens et cliquez sur Enregistrer.
Voila!
Ceci est ma première réponse alors soyez s'il vous plaît! :)
Je DID PAS un 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épertoires et j’avais peur que WP apporte des modifications à ma base de données au moment où ils me donnent 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, s'il vous plaît ne pas aller pour un sous-dossier - je n'ai pas!
CEPENDANT, dans SQL DB, c’est ce qui s’est passé dans mon cas - c’était déjà déjà comme ça, donc je n’ai apporté aucune modification:
wp_blogs domaine: chemin xyzabc.com: /
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éécris ton wp-config.php
avec ce code
define('SUBDOMAIN_INSTALL', false);
au lieu de define('SUBDOMAIN_INSTALL', true);
ensuite aller à:
http://www.website.com/wp-admin/network/setup.php
puis:
Ajoutez les éléments suivants à votre fichier .htaccess dans /var/www/vhosts/website.com/, en remplacement des autres règles 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]
C'est tout.
Créer un nouveau site avec un sous-répertoire