Po pierwsze, przeczytałem wiele postów na temat tego procesu. Jednak z różnych powodów proces ten nadal jest trudny do wdrożenia lub rozwiązania problemów z powodu braku nawet abstrakcyjnych przykładów, a może zbyt abstrakcyjnych. Jest też kilka postów „nie da się zrobić”, po których prawie zawsze następuje „3.5”, teraz możesz „zastrzec”, więc czy ktoś może pozostać niejednoznaczny, choć niewątpliwie niebanalny.
Streszczenie:
Jak przenieść Wordpress Multisite (WPMS) z root.com do root / blogów?
W tym przykładzie przenosimy WPMS z „root.com” na „root.com/blogs”
Rozumiem, że muszę odpowiednio zaktualizować ścieżki w bazie danych i wp-config.php. Wygląda na to, że mogę także zaktualizować plik .htaccess? Mam również świadomość problemu serializacji z aktualizacjami wyszukiwania / zamiany i zapytań mysql.
Mam WPMS, który zaktualizowałem do wersji 3.5. Znalazłem następujące tabele z informacjami o domenie i ścieżce
Istniejąca konfiguracja robocza przed przejściem do podkatalogu
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. Blog_id odpowiada tabelom opcji wp _ # _, które zawierają:
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. W moim wp-config.php mam następujące wiersze specyficzne dla 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. Wreszcie, w moim .htaccess mam:
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]
Aktualizacje wymagane do przeniesienia witryny
Wydaje mi się, że w celu przeniesienia mojej witryny do / blogów:
1. Zaktualizuj wp_blogs do
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. Zaktualizuj wp_site do
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 _ # _ opcje
+-------------+--------------------------------+
| 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 );
Uwaga: Nie jestem pewien, jak ten krok został odpowiednio zaktualizowany
5. .htaccess
Znalazłem niejasne instrukcje „odpowiednio aktualizuj .htaccess”, ale nie były to szczegóły. Zaktualizować RewriteBase? Które linie w .htaccess do zaktualizować po przeniesieniu root.com na root.com/blogs?
W powyższym procesie brakuje ścieżek znalezionych w postach. Moi drutherzy powinni użyć do tego narzędzia wyszukiwania i zamiany po tym, jak dokonałem tych bardziej fundamentalnych aktualizacji; czy się mylę?
Aktualizacja bungeshea sugeruje, że tak, wskazuję RewriteBase na podkatalog „blogów”, tj.
RewriteBase /Blogs
Wreszcie, jeśli nie wiesz o http://interconnectit.com/products/search-and-replace-for-wordpress-databases/ , powinieneś. To jest świetne.
update wp_blogs set domain=concat(domain, '/blogs'), path=concat(path, 'blogs/');
powinny raczej brzmiećupdate wp_blogs set path=concat('/blogs',path);