WP Çoklu Sitesini bir alt dizine taşıma


20

İlk olarak, bu süreçle ilgili birkaç gönderi okudum . Bununla birlikte, çeşitli nedenlerden ötürü, sürecin soyutlanmış örneklerin bile eksik olması veya belki de çok soyutlanmış olması nedeniyle uygulanması veya sorunlarının giderilmesi zor olmaya devam etmektedir. Ve birkaç "yapamaz" mesaj var, neredeyse her zaman 3.5 ile takip ediyor ", şimdi" uyarılar yapabilirsiniz, bu yüzden şüphesiz önemsiz olsa da, belirsiz olup olmayacağı.

Özet:

Bir wordpress çoklu sitesini (WPMS) root.com'dan root / bloglara nasıl taşıyabilirim?

Bu örnekte, bir WPMS'yi "root.com" dan "root.com/blogs" e taşıyoruz

Veritabanındaki ve wp-config.php'deki yolları uygun şekilde güncellemem gerektiğini anlıyorum. Görünüşe göre .htaccess'i de güncellemem gerekebilir? Ayrıca arama / değiştirme ve mysql sorgu güncellemeleri ile serileştirme sorununun farkındayım.

3.5 sürümüne güncellediğim bir WPMS'im var. Alan adı ve yol bilgisi içeren aşağıdaki tabloları buldum

Alt dizine geçmeden önce mevcut çalışma yapılandırması

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, aşağıdakileri içeren wp _ # _ seçenekler tablosuna karşılık gelir:

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. wp-config.php dosyamda WPMS'ye özel aşağıdaki satırlar var:

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. Son olarak, .htaccess'imde :

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]

Siteyi taşımak için gerekli güncellemeler

Bana öyle geliyor ki sitemi / blog'lara taşımak için:

1. wp_blogs dosyasını güncelleyin

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. wp_site öğesini güncelleyin

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 _ # _ seçenekleri

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

not: Bu adımın uygun şekilde nasıl güncellendiği açık değil

5. .htaccess

Belirsiz ".htaccess'i uygun şekilde güncelle" talimatlarını buldum, ancak özellikleri değil. RewriteBase güncellensin mi? Root.com'u root.com/blogs dosyasına taşıdığımda .htaccess dosyasındaki hangi satırları güncelleyeceğim?

Yukarıdaki işlemde eksikler yazılarda bulunan yollar olacaktır. Benim druthers bu daha temel güncellemeleri yaptıktan sonra, arama ve değiştirme aracını kullanmaktır; yoksa yanılıyor muyum?

Güncelleme bungeshea , evet, ben RewriteBase "bloglar" alt dizin işaret, yani,

RewriteBase /Blogs

Son olarak, http://interconnectit.com/products/search-and-replace-for-wordpress-databases/ hakkında bilmiyorsanız bilmeniz gerekir. Bu mükemmel.


3
Harika bir soru, harika bir süreç +1
kaiser

1
Sadece ben mi? Bence, süreçteki sorguların doğru update wp_blogs set domain=concat(domain, '/blogs'), path=concat(path, 'blogs/'); olmaması gerekirupdate wp_blogs set path=concat('/blogs',path);
MR

Yanıtlar:


7

Eski olduğunu biliyorum ama düzelttim! Bir alt klasöre WP MU yükledim. 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);

ve veritabanınızda şunu değiştirin:

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)

Bu inanılmaz yardımcı oldu. Bir alt etki alanı yükleme ve sitenin bir veritabanı dökümü ve zip vardı. Yeni bir sunucuya geri yüklemem gerekiyordu ve siteyi manuel olarak güncellemem gerekiyordu. Veritabanı güncellemeleri yapmam gereken en önemli güncellemelerdi. Teşekkür ederim!
Jacob Raccuia

2

Bana kendi probleminizi çözmüş gibi görünüyor - sadece 1-4 arasındaki adımları izleyin ve 5. adım için RewriteBasegirişi güncelleyin .htaccess. Mesajlardaki yolları güncellemek için Interconnect IT sterilize arama ve değiştirme aracını kullanmayı seviyorum .


Teşekkürler, bungshea. Yazımda belirttiğim gibi, RewriteBase'i yukarıdaki örneğe göre tam olarak neye güncelleyin? Bu olurdu: RewriteBase / blog?
Screenack

Evet:RewriteBase /blog
shea

Bungshea; ama yine de çalışmıyor. Yukarıdakilerin hepsinden sonra yine de "Veritabanı bağlantısı kurulurken hata oluştu". Daha da kötüsü, apache hata günlüğüme atılan hata yok.
Screenack

@Screenack "Veritabanı bağlantısı kurulurken hata oluştu" nun özellikleri nelerdir? İpucu: ziyaretwp-admin
shea

1

Tamam işte yaptım ve bu işe yaradı. Alt klasör yok. Site daha önce alt alan adına yapılandırılmıştı.

İLK YEDEKLEME !!!

wp-config.php (bu bloğu dosyanızdaki blokla değiştirin)

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]

şimdi SQL DB'de:

1) her wp_ (site #) _ tablesuffix için seçenekler tablosuna gidin ve siteurl ve home'u http://www.sitename.com/blogname

2) her blog_id için wp_blogs alan adını olarak blogname.domain.comdeğiştirir domain.comve/blogname/

3) yükleme aynı konumdaysa wp_options siteurl & home veya wp_site veya wp_sitemeta içindeki herhangi bir hücreyi değiştirmeye gerek yoktur.

İşiniz bittikten sonra (süper kullanıcı yönetici panelinde) ayarlar> kalıcı bağlantılara gidin ve kaydet'i tıklayın.

İşte bu kadar!


0

Bu benim ilk cevabım, bu yüzden lütfen düşünceli ol! :)

Zaten dönüştürülecek alt alanlarda olan bir blogum yoktu. Ama savaşmak zorunda kaldım çünkü eski bir blogdu ve bir alt dizin blogu yapmama izin vermiyorlardı ve WP'nin bana koymak için kodları verdiklerinde DB'mde değişiklikler yapmasından korktum.

Nisan 2018'de bu benim için işe yaradı çocuklar ... hot_barbara'dan wp-config'i kullandım ve .htaccess'i de onlardan kullandım.

Bu nedenle, lütfen bir alt klasör için gitmeyin - ben yapmadım!

Ancak, SQL DB, bu benim durumumda oldu - zaten bu şekilde oldu, bu yüzden herhangi bir değişiklik yapmadım:

  1. wp_site alan adı: xyzabc.com yolu: /

wp_blogs alan adı: xyzabc.com yolu: /

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

Anladığım kadarıyla, ayarlarınızda bir eğik çizgi kullanacaksınız.


0

wp-config.phpBu kodla yeniden yazın

define('SUBDOMAIN_INSTALL', false);

onun yerine define('SUBDOMAIN_INSTALL', true);

sonra şuraya git:

http://www.website.com/wp-admin/network/setup.php

sonra:

Diğer WordPress kurallarını değiştirerek /var/www/vhosts/website.com/ adresindeki .htaccess dosyanıza aşağıdakileri ekleyin:

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]

Bu kadar.

Alt Dizin ile Yeni Bir Site Oluşturma

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.