WP मल्टीसाइट को एक उपनिर्देशिका में ले जाना


20

सबसे पहले, मैं गया है पढ़ने के एक नंबर इस प्रक्रिया पर पदों की। हालांकि, विभिन्न कारणों से, प्रक्रिया अमूर्त उदाहरणों की कमी के लिए लागू करने या समस्या निवारण करने के लिए मुश्किल बनी हुई है, या शायद बहुत सार। और वहाँ कुछ "नहीं कर सकते" पोस्ट, लगभग हमेशा 3.5 के साथ "के बाद, आप अब कर सकते हैं" caveats, तो क्या कोई अस्पष्ट रह सकता है, हालांकि कोई शक नहीं गैर तुच्छ।

सारांश:

Wordpress multisite (WPMS) को root.com से root / ब्लॉग्स में कैसे स्थानांतरित करें?

इस उदाहरण के लिए, हम एक WPMS को "root.com" से "root.com/blogs" पर ले जा रहे हैं

मैं समझता हूं कि मुझे डेटाबेस और wp-config.php में उचित रूप से पथ अपडेट करने की आवश्यकता है। ऐसा लगता है कि मुझे भी अद्यतन करना पड़ सकता है। मैं खोज / बदलें और mysql क्वेरी अपडेट के साथ क्रमांकन मुद्दे से भी अवगत हूं।

मेरे पास एक WPMS है जिसे मैंने 3.5 में अपडेट किया है। मुझे डोमेन और पथ जानकारी के साथ निम्न तालिकाएँ मिली हैं

उपनिर्देशिका में जाने से पहले मौजूदा कार्य विन्यास

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 wp _ # _ विकल्प तालिकाओं से मेल खाता है जिसमें शामिल हैं:

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 में मेरे पास निम्नलिखित 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. अंत में, मेरे .htaccess में , मेरे पास है:

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]

साइट को स्थानांतरित करने के लिए आवश्यक अपडेट

ऐसा लगता है कि मेरी साइट को / ब्लॉगों पर ले जाने के लिए, मैं:

1. wp_blogs को अपडेट करें

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 को अपडेट करें

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 _ # _ विकल्प

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

नोट: मैं स्पष्ट नहीं हूं कि यह कदम उचित रूप से कैसे अपडेट किया गया है

5. है

मुझे अस्पष्ट "अद्यतन। उचित रूप से निर्देश" मिला, लेकिन विवरण नहीं। अपडेट अपडेट करें? जब मैं रूट .blogs में root.com ले जाता हूं, तो कौन सी लाइनें .htaccess में अपडेट होती हैं?

उपरोक्त प्रक्रिया से गुम होने के बाद पोस्ट में मिलने वाले रास्ते होंगे। मेरे शराबी इस खोज का उपयोग करने और उस के लिए उपकरण को बदलने के लिए हैं, जब मैंने इसे और अधिक मौलिक अपडेट किया है; या मैं गलत हूँ?

अपडेट बेंगेशिया से पता चलता है कि, हां, मैं "ब्लॉग्स" उपनिर्देशिका, यानी

RewriteBase /Blogs

अंत में, यदि आप http://interconnectit.com/products/search-and-replace-for-wordpress-dat डेटाबेस/ के बारे में नहीं जानते हैं तो आपको चाहिए। उत्कृष्ट है।


3
महान प्रश्न, महान प्रक्रिया +1
केसर

1
यह सिर्फ मैं हूँ? मुझे लगता है, प्रक्रिया में प्रश्न सही नहीं हैं update wp_blogs set domain=concat(domain, '/blogs'), path=concat(path, 'blogs/'); बल्कि होना चाहिएupdate wp_blogs set path=concat('/blogs',path);
MR

जवाबों:


7

मुझे पता है कि यह पुराना है लेकिन मैंने इसे ठीक कर लिया है! मैंने सबफ़ोल्डर में WP MU स्थापित किया। 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);

और अपने डेटाबेस में, इसे संशोधित करें:

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)

यह अविश्वसनीय रूप से मददगार था। मेरे पास एक उपडोमेन इंस्टॉल और एक डेटाबेस डंप और साइट का ज़िप है। मुझे एक नए सर्वर पर इसे पुनर्स्थापित करने की आवश्यकता थी, और साइट को मैन्युअल रूप से अपडेट करना था। डेटाबेस अपडेट सबसे जरूरी थे जिन्हें मैं बनाना चाहता था। धन्यवाद!
जैकब रेकुआ

2

यह मेरे लिए लगता है जैसे आप अपने खुद के समस्या हल हो गया है - बस अपने चरणों 1-4 का पालन करें, और चरण 5 अद्यतन के लिए RewriteBaseमें .htaccess। पोस्ट में पथों को अपडेट करने के लिए, मुझे इंटरकनेक्ट आईटी निष्फल खोज-और-प्रतिस्थापित टूल का उपयोग करना पसंद है ।


धन्यवाद, बंगशी जैसा कि मैंने अपनी पोस्ट में संकेत किया है, उपरोक्त उदाहरण के अनुसार, क्या, वास्तव में, रेवाइटबेस को अपडेट करें? यह होगा: RewriteBase / ब्लॉग?
स्क्रीनबैक

हाँ:RewriteBase /blog
शिया

Bungshea; किया है, लेकिन अभी भी काम नहीं कर रहा है। फिर भी उपरोक्त सभी के बाद "डेटाबेस कनेक्शन स्थापित करने में त्रुटि" हो रही है। इससे भी बदतर, मेरी अपाचे त्रुटि लॉग में कोई त्रुटि नहीं है।
पटकथा

@ स्क्रीनबैक "डेटाबेस कनेक्शन स्थापित करने में त्रुटि" की बारीकियां क्या हैं? संकेत: यात्राwp-admin
शिया

1

ठीक है यहाँ मैंने क्या किया और यह काम किया। कोई सब_फ़ोल्डर नहीं। साइट को पहले उपडोमेन में कॉन्फ़िगर किया गया था।

बैकअप पहले !!!

wp-config.php (अपनी फ़ाइल में इस ब्लॉक को ब्लॉक से बदलें)

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]

अब SQL DB में:

1) प्रत्येक wp_ के लिए (साइट #) _ टेबलफिक्स विकल्प तालिका पर जाएं और साइटर्ल और घर को बदल दें http://www.sitename.com/blogname

2) से प्रत्येक blog_id बदलाव के लिए डोमेन wp_blogs blogname.domain.comलिए domain.comऔर करने के लिए पथ/blogname/

3) अगर उसी स्थान पर स्थापित है तो wp_options साइटर्ल और घर या wp_site या wp_sitemeta में किसी भी सेल को बदलने की आवश्यकता नहीं है।

आपके द्वारा यह सुनिश्चित करने के बाद (सुपरयूज़र व्यवस्थापक पैनल में) सेटिंग> पेरालिंक्स पर जाएं और सहेजें पर क्लिक करें।

देखा!


0

यह मेरा पहला उत्तर है इसलिए कृपया विचारशील बनें! :)

मेरे पास ऐसा ब्लॉग नहीं है जिसे पहले से ही उप-डोमेन में परिवर्तित किया जाना था। लेकिन मुझे लड़ना पड़ा क्योंकि यह एक पुराना ब्लॉग था और उन्होंने मुझे एक उपनिर्देशिका ब्लॉग बनाने की अनुमति नहीं दी और मुझे डर था कि WP ने मेरे DB में तब तक बदलाव किया जब तक उन्होंने मुझे कोड डालने के लिए नहीं दिया।

यह मेरे लिए अप्रैल 2018 में काम किया है दोस्तों ... मैंने wp-config का उपयोग hot_barbara से किया है और मैंने उनसे .htaccess का भी उपयोग किया है।

इसलिए, कृपया एक सबफ़ोल्डर के लिए न जाएं - मैंने नहीं किया!

HOWEVER, SQL DB में, मेरे मामले में यही हुआ है - यह सब पहले से ही था इसलिए मैंने कोई बदलाव नहीं किया:

  1. wp_site डोमेन: xyzabc.com पथ: /

wp_blogs डोमेन: xyzabc.com पथ: /

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

आप - जैसा कि मैं समझता हूं - यदि आप अपनी सेटिंग में थे, तो एक अनुगामी स्लैश का उपयोग करें।


0

wp-config.phpइस कोड के साथ अपने को फिर से लिखें

define('SUBDOMAIN_INSTALL', false);

के बजाय define('SUBDOMAIN_INSTALL', true);

फिर जाएं:

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

फिर:

अन्य वर्डप्रेस नियमों की जगह /var/www/vhosts/website.com/ में अपनी .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]

बस।

Subdirectory के साथ एक नई साइट बनाएँ

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.