Za prvé, jsem čtenípočet pracovních míst v tomto procesu. Z různých důvodů je však stále obtížné tento proces implementovat nebo řešit problémy s nedostatkem i abstraktních příkladů, nebo možná příliš abstrakcí. A je tu několik "nemůže dělat" příspěvky, téměř vždy následuje "s 3.5, nyní můžete" upozorňuje, takže ať už může zůstat dvojznačný, i když bezpochyby non-triviální.
Jak přesunout wordpress multisite (WPMS) z root.com na root/blogy?
V tomto příkladu přesouváme WPMS z "root.com" na "root.com/blogs"
Chápu, že musím správně aktualizovat cesty v databázi a wp-config.php. Zdá se, že také musím aktualizovat .htaccess? Také jsem si vědom serializačního problému s vyhledáváním/nahrazením a aktualizací dotazů mysql.
Mám WPMS, který jsem aktualizoval na 3.5. Našel jsem následující tabulky s informacemi o doméně a cestě
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]
Zdá se mi, že za účelem přesunu svých stránek na/blogy bych:
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: Nejsem si jistý, jak je tento krok vhodně aktualizován
Našel jsem vágní instrukce „aktualizovat .htaccess“, ale ne specifika. Aktualizovat RewriteBase? Jaké řádky v .htaccess aktualizuji, když přesouvám root.com na root.com/blogs?
Chybějící z výše uvedeného procesu budou cesty založené v příspěvcích. Moji druthers použijí nástroj pro vyhledávání a nahrazování toho, co jsem provedl tyto zásadnější aktualizace; nebo se mýlím?
Updatebungeshea navrhuje, že ano, přejdu RewriteBase do podadresáře "blogy", tzn.
RewriteBase /Blogs
Nakonec, pokud nevíte o http://interconnectit.com/products/search-and-replace-for-wordpress-databases/ měli byste. Je to vynikající.
Vím, že je to starý, ale opravil jsem to! i nainstalovali WP MU do podsložky. 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);
a v databázi upravte toto:
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)
Vypadá to, jako kdybyste vyřešili svůj vlastní problém - postupujte podle kroků 1-4 a pro krok 5 aktualizujte RewriteBase
v .htaccess
. Pro aktualizaci cest v příspěvcích se mi líbí použití nástroje Interconnect IT sterilizovaného vyhledávání a nahrazení .
Ok, co jsem udělal, a to fungovalo. Žádná podsložka. Místo bylo dříve nakonfigurováno na subdoménu.
ZÁLOHOVÁNÍ PRVNÍ !!!
wp-config.php (nahradit tento blok blokem ve vašem souboru)
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]
nyní v SQL DB:
1) pro každý wp_ (site #) _ tablesuffix přejděte do tabulky možností a změňte siteurl a home na http://www.sitename.com/blogname
2) wp_blogs pro každý blog_id mění doménu z blogname.domain.com
na domain.com
a cestu na /blogname/
3) není třeba měnit wp_options siteurl & home nebo jakékoliv buňky v wp_site nebo wp_sitemeta, pokud je instalace na stejném místě.
Poté, co jste hotovi, se ujistěte, že jdete na (v panelu superuživatele admin) nastavení> permalinks a kliknete na tlačítko Uložit.
Voila!
To je moje první odpověď, prosím, buďte ohleduplní! :)
I DID NENÍ k dispozici blog, který již byl v subdoménách konvertován. Ale musel jsem bojovat, protože to byl starý blog a oni mi nedovolili, abych vytvořil podadresářový blog a obával jsem se, že WP udělalo změny v mém DB v době, kdy mi dali kódy, které jsem vložil.
To je to, co pro mě pracovalo v dubnu 2018 kluci ... Použil jsem wp-config z hot_barbara a také jsem z nich použil .htaccess.
Proto prosím, dont jít na podsložku - I didnt!
Ale v SQL DB se to stalo v mém případě - to už bylo takhle, takže jsem neučinil žádné změny:
doména wp_blogs: cesta xyzabc.com: /
wp_sitemeta siteurl: h ** ps: //xyzabc.com/
Pokud byste to měli v nastavení, používali byste, jak jsem pochopil, lomítko.
Přepište wp-config.php
tímto kódem
define('SUBDOMAIN_INSTALL', false);
místo define('SUBDOMAIN_INSTALL', true);
pak goto:
http://www.website.com/wp-admin/network/setup.php
pak:
Přidejte následující soubor .htaccess v souboru /var/www/vhosts/website.com/, který nahradí ostatní pravidla aplikace 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]
A je to.
Vytvořit nový web s podadresářem