WordPress Multisite: 2 โครงสร้าง โดเมนย่อยและไดเรกทอรีย่อย
WordPress Multisite (มัลติไซต์) คือฟีเจอร์ที่รวมหลายเว็บไซต์เป็นเครือข่ายเดียวและจัดการด้วยการติดตั้ง WordPress เพียงชุดเดียว เราเปิดใช้มัลติไซต์จากหน้าตั้งค่าเครือข่ายบน WordPress ที่ใช้ Nginx + Apache เพิ่มเว็บย่อยหนึ่งเว็บ แล้วตรวจสอบเส้นทางเมนูและบรรทัดที่ต้องใส่ในไฟล์ตั้งค่า
1️⃣ WordPress Multisite และผู้ควบคุมเครือข่าย
ในมัลติไซต์ ทุกเว็บไซต์ในเครือข่ายใช้การติดตั้ง WordPress ชุดเดียวร่วมกัน ไฟล์คอร์ ปลั๊กอิน และธีมก็ใช้ร่วมกันด้วย จึงไม่มีโฟลเดอร์ WordPress แยกของแต่ละเว็บไซต์บนเซิร์ฟเวอร์
สิ่งที่แต่ละเว็บไซต์มีแยกกันคือตารางในฐานข้อมูลและโฟลเดอร์อัปโหลดสื่อ ส่วนตารางผู้ใช้เท่านั้นที่ใช้ร่วมกันทั้งเครือข่าย เว็บไซต์แรกใช้ [/wp-content/uploads/] เดิม และตั้งแต่เว็บไซต์ถัดไป แต่ละเว็บไซต์ใช้โฟลเดอร์ตามหมายเลขเว็บไซต์ใน [/wp-content/uploads/sites/]
ผู้ใช้ที่จัดการทั้งเครือข่ายคือผู้ควบคุมขั้นสูง (Super Admin) หน้าผู้ควบคุมเครือข่ายจะมีขึ้นหลังสร้างเครือข่ายแล้ว และแสดงให้ผู้ควบคุมขั้นสูงเห็นเท่านั้น
ผู้ใช้ถูกสร้างเป็นบัญชีของเครือข่าย แต่ต้องได้รับบทบาทในแต่ละเว็บไซต์ก่อนจึงเข้าใช้เว็บไซต์นั้นได้ สิทธิ์ของผู้ดูแลเว็บไซต์ก็ลดลงด้วย การติดตั้งธีมและปลั๊กอิน รวมถึงการแก้ไขโปรไฟล์ของผู้ใช้อื่น ทำได้เฉพาะผู้ควบคุมขั้นสูง
ในแผนภาพด้านล่าง คุณจะเห็นโครงสร้างที่การติดตั้งชุดเดียวแยกออกเป็นหลายเว็บไซต์ผ่านเครือข่าย และที่อยู่เว็บไซต์ตามแบบที่อยู่แต่ละแบบ
2️⃣ ความต่างของโดเมนย่อยและไดเรกทอรีย่อย: รูปแบบที่อยู่และข้อจำกัดในการเลือก
ตอนตั้งค่าเครือข่าย คุณต้องเลือกแบบที่อยู่ของเว็บไซต์ระหว่างโดเมนย่อยกับไดเรกทอรีย่อย โดเมนย่อยคือที่อยู่รูปแบบ site1.example.com ส่วนไดเรกทอรีย่อย (โฟลเดอร์ย่อย) คือรูปแบบ example.com/site1
| รายการ | โดเมนย่อย | ไดเรกทอรีย่อย |
|---|---|---|
| ที่อยู่เว็บไซต์ | site1.example.com | example.com/site1 |
| ชื่อในเอกสารทางการ | อิงโดเมน (domain-based) | อิงเส้นทาง (path-based) |
| การเตรียมฝั่งเซิร์ฟเวอร์ | ชี้โดเมนย่อยไปยังโฟลเดอร์ติดตั้ง WordPress ใน DNS และบนเซิร์ฟเวอร์ | ไม่ต้องตั้งค่าเพิ่มถ้าลิงก์ถาวรทำงาน |
| เมื่อผู้ใช้สร้างเว็บไซต์เอง | ต้องใช้โดเมนย่อยแบบไวลด์การ์ด | ไม่มีเงื่อนไขเพิ่ม |
| กรณีที่เลือกไม่ได้ | เมื่อที่อยู่ WordPress มีเส้นทาง หรือเป็น localhost หรือที่อยู่ IP | เว็บไซต์ที่มีเรื่องเผยแพร่มานานกว่าหนึ่งเดือน |
| ที่อยู่เรื่องของเว็บไซต์หลัก | ไม่เปลี่ยน | เพิ่ม /blog/ หน้าที่อยู่เรื่อง |
แบบไดเรกทอรีย่อยไม่ต้องตั้งค่าอะไรเพิ่มบนเซิร์ฟเวอร์ที่ลิงก์ถาวรทำงาน แต่เลือกไม่ได้ในเว็บไซต์ที่มีเรื่องเผยแพร่มานานกว่าหนึ่งเดือน ข้อจำกัดนี้มีไว้กันไม่ให้ที่อยู่เรื่องเดิมชนกับที่อยู่ของเว็บไซต์ใหม่ เว็บไซต์แบบนี้จึงต้องติดตั้งแบบโดเมนย่อย
ในเครือข่ายแบบไดเรกทอรีย่อย ที่อยู่เรื่องของเว็บไซต์หลักจะมี [/blog/] เพิ่มเข้ามา เพื่อไม่ให้ซ้ำกับที่อยู่ของเว็บย่อย และจะไม่เพิ่มในที่อยู่ของหน้า
ถ้าจะเปลี่ยนแบบที่เลือกไว้ในภายหลังต้องผ่านหลายขั้นตอน ตามเอกสารทางการ การเปลี่ยนแค่ค่า [SUBDOMAIN_INSTALL] และกฎการเขียนใหม่จะไม่ย้ายที่อยู่ของเว็บไซต์เดิม และต้องตั้งค่า DNS กับใบรับรองแยกต่างหากด้วย
3️⃣ เตรียมตัวก่อนตั้งค่าเครือข่าย: สำรองข้อมูล ลิงก์ถาวร และเงื่อนไขของเซิร์ฟเวอร์
การตั้งค่าเครือข่ายเป็นการเปลี่ยนไฟล์และฐานข้อมูลของเว็บไซต์เดิม เอกสารทางการจึงแนะนำให้สำรองข้อมูลก่อน หากไม่ใช่เว็บไซต์ที่เพิ่งติดตั้งใหม่
สำรองฐานข้อมูลและไฟล์ ตรวจสอบว่าลิงก์ถาวรทำงาน แล้วปิดใช้งานปลั๊กอินที่เปิดอยู่ทั้งหมด เปิดใช้งานปลั๊กอินอีกครั้งหลังสร้างเครือข่ายแล้ว
ถ้าวางแผนจะย้าย WordPress ไปทำงานในโฟลเดอร์ของตัวเอง ให้ทำให้เสร็จก่อนเปิดใช้มัลติไซต์ ถ้าใช้ที่อยู่ www กับแบบโดเมนย่อย ให้ตั้ง [ที่อยู่เวิร์ดเพรส (URL)] และ [ที่อยู่เว็บไซต์ (URL)] ให้เหมือนกัน และเปลี่ยนโดเมนให้เสร็จก่อนตั้งค่าด้วย
ถ้าที่อยู่ WordPress มีหมายเลขพอร์ตที่ไม่ใช่ :80 หรือ :443 จะสร้างเครือข่ายไม่ได้
เซิร์ฟเวอร์ต้องประมวลผลกฎการเขียนใหม่สำหรับมัลติไซต์ได้ และ Apache ต้องมี mod_rewrite
ในการตั้งค่าแบบ Nginx + Apache ตัว Nginx ส่งคำขอต่อให้ Apache และ Apache อ่าน .htaccess เมื่อเปลี่ยน .htaccess เป็นกฎที่แสดงในหน้าตั้งค่าเครือข่าย ที่อยู่ของเว็บย่อยก็เปิดได้ และเราไม่ได้เพิ่มกฎฝั่ง Nginx
เซิร์ฟเวอร์ที่ใช้ Nginx อย่างเดียว WordPress จะไม่สร้างกฎการเขียนใหม่ให้ จึงต้องเพิ่มการตั้งค่า Nginx จากเอกสารทางการลงในไฟล์ตั้งค่าของเซิร์ฟเวอร์เอง
ในสภาพแวดล้อมที่คุณเปลี่ยนการตั้งค่าเซิร์ฟเวอร์เองไม่ได้ เช่น โฮสติ้งแบบแชร์ เงื่อนไขอย่างโดเมนย่อยแบบไวลด์การ์ดต้องคุยกับผู้ให้บริการโฮสติ้ง (ตามเอกสารทางการ)
4️⃣ ขั้นตอนตั้งค่าเครือข่าย
ค่าคงที่ [WP_ALLOW_MULTISITE] ที่ใส่ใน wp-config.php แค่แสดงเมนู [เครื่องมือ] › [ตั้งค่าเครือข่าย] เท่านั้น ลำพังค่านี้ไม่ได้เปิดใช้มัลติไซต์ เครือข่ายจะเปิดใช้งานหลังติดตั้งในหน้านั้น แล้วเพิ่มบรรทัดที่แสดงบนหน้าจอลงใน wp-config.php และ .htaccess
เปิด wp-config.php แล้วเพิ่มบรรทัดที่กำหนด [WP_ALLOW_MULTISITE] เป็น true ไว้เหนือคอมเมนต์จบการแก้ไข คอมเมนต์จบการแก้ไขคือบรรทัด /* That’s all, stop editing! Happy publishing. */ บันทึกแล้วรีเฟรชเบราว์เซอร์
define( 'WP_ALLOW_MULTISITE', true );เมื่อรีเฟรช เมนู [เครื่องมือ] จะมี [ตั้งค่าเครือข่าย] เพิ่มเข้ามาใต้ [ลบข้อมูลส่วนตัว] และเมื่อกดเมนูนี้จะเปิดหน้า [สร้างเครือข่ายของเว็บเวิร์ดเพรส]

WordPress ที่ติดตั้งในโฟลเดอร์ย่อยจะไม่มีช่องให้เลือกแบบที่อยู่ แสดงแค่แถว [การติดตั้งไดเรกทอรีย่อย] ข้อความในแถวนั้นคือ [เนื่องจากเป็นการติดตั้งในไดเรกทอรี เว็บในเครือข่าย WordPress ของคุณต้องใช้งานแบบไดเรกทอรีย่อย]
ตรวจสอบ [หัวข้อเครือข่าย] และ [อีเมลผู้ควบคุมเครือข่าย] แล้วกด [ติดตั้ง]
ตามเอกสารทางการ ในการติดตั้งที่เลือกแบบที่อยู่ได้ ถ้าเลือกโดเมนย่อยจะมีคำแนะนำเรื่อง DNS แบบไวลด์การ์ดขึ้นมา และเงื่อนไขนี้จำเป็นเฉพาะเครือข่ายที่ผู้ใช้สร้างเว็บไซต์เอง
หลังติดตั้ง หน้าจอจะแสดงบรรทัดของ wp-config.php และกฎของ .htaccess ที่ปรับให้ตรงกับเว็บไซต์นั้น สำรองไฟล์ทั้งสองไว้ วางบรรทัดใน wp-config.php ใต้บรรทัด [WP_ALLOW_MULTISITE] และเปลี่ยนกฎ WordPress เดิมใน .htaccess เป็นกฎใหม่

คำแนะนำบนหน้าจอหลังติดตั้งจะแสดงคอมเมนต์จบการแก้ไขที่แปลเป็นภาษาของหน้าผู้ดูแล แต่คอมเมนต์ใน wp-config.php ยังเป็นภาษาอังกฤษ
บรรทัดที่เพิ่มใน wp-config.php คือค่าคงที่หกตัว รวมถึง [MULTISITE] และ [SUBDOMAIN_INSTALL] ค่า [SUBDOMAIN_INSTALL] เป็น true สำหรับโดเมนย่อย และ false สำหรับไดเรกทอรีย่อย
[DOMAIN_CURRENT_SITE] และ [PATH_CURRENT_SITE] เก็บโดเมนและเส้นทางติดตั้งของเว็บไซต์นั้น ด้านล่างคือบรรทัดของการติดตั้งที่รูทของ example.com แบบไดเรกทอรีย่อย
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false );
define( 'DOMAIN_CURRENT_SITE', 'example.com' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );ในกรณีเดียวกัน ให้เปลี่ยนกฎ WordPress ใน .htaccess เป็นกฎด้านล่าง และบรรทัด [RewriteBase] จะมีเส้นทางติดตั้งอยู่
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
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]หลังบันทึกไฟล์ทั้งสอง ให้เข้าสู่ระบบอีกครั้งผ่านลิงก์ [เข้าสู่ระบบ] บนหน้าจอ แล้ว [ผู้ควบคุมเครือข่าย] จะขึ้นมาใต้ [เว็บของฉัน] ในแถบผู้ดูแล ถ้าเข้าสู่ระบบไม่ได้ ให้ล้างแคชและคุกกี้ของเบราว์เซอร์แล้วเข้าสู่ระบบใหม่

[ผู้ควบคุมเครือข่าย] มีหกเมนู คือ แผงควบคุม เว็บไซต์ ผู้ใช้ ธีม ปลั๊กอิน และตั้งค่า เมื่อกด [เว็บไซต์] จะเปิดรายการเว็บไซต์ในเครือข่าย

เพิ่มเว็บย่อยได้จาก [เพิ่มเว็บ] ข้างหัวข้อรายการ หรือจาก [เว็บไซต์] › [เพิ่มเว็บ] ด้านซ้าย

[ที่อยู่เว็บไซต์ (URL)] ใส่ได้เฉพาะตัวพิมพ์เล็ก ตัวเลข และขีดกลาง และถ้า [อีเมลผู้ควบคุม] ไม่มีอยู่ในฐานข้อมูล ระบบจะสร้างผู้ใช้ใหม่
เมื่อเพิ่มเว็บย่อยหนึ่งเว็บ โฟลเดอร์ [sites/2] ก็เกิดขึ้นในโฟลเดอร์อัปโหลด และในฐานข้อมูลมีตาราง 10 ตารางเพิ่มขึ้น ซึ่งมีหมายเลขเว็บไซต์ต่อท้ายคำนำหน้าแบบ [wp_2_]
ลิงก์ถาวรของเว็บย่อยไม่ได้ตามการตั้งค่าของเว็บไซต์หลัก แต่เริ่มจากโครงสร้างพื้นฐานที่มีปี เดือน วัน และชื่อเรื่อง จึงต้องกำหนดแยกในการตั้งค่าลิงก์ถาวรของเว็บย่อย
ในซิมูเลเตอร์ด้านล่าง คุณกดดูเส้นทางตั้งแต่ [เครื่องมือ] › [ตั้งค่าเครือข่าย] จนถึง [เพิ่มเว็บ] ตามลำดับได้
네트워크 설치 절차에 오신 것을 환영합니다!
아래의 정보를 채우고 워드프레스 사이트의 네트워크를 만들 수 있습니다. 다음 단계에서 구성 파일을 만들 것입니다.
다음 단계를 완료하여 사이트의 네트워크 만들기 기능을 활성화하세요.
- /var/www/html/wp/의 wp-config.php파일에 /* 그게 다입니다. 편집을 멈추세요! 즐겁게 발행하세요. */행 위에 다음을 추가합니다:wp-config.php에 대한 네트워크 환경설정 규칙define( 'MULTISITE', true );define( 'SUBDOMAIN_INSTALL', false );define( 'DOMAIN_CURRENT_SITE', 'example.com' );define( 'PATH_CURRENT_SITE', '/wp/' );define( 'SITE_ID_CURRENT_SITE', 1 );define( 'BLOG_ID_CURRENT_SITE', 1 );
- 다른 워드프레스 규칙을 교체하는 /var/www/html/wp/의 .htaccess 파일에 다음을 넣습니다:.htaccess에 대한 네트워크 환경설정 규칙RewriteEngine OnRewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]RewriteBase /wp/RewriteRule ^index\.php$ – [L]# add a trailing slash to /wp-adminRewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]RewriteCond %{REQUEST_FILENAME} -f [OR]RewriteCond %{REQUEST_FILENAME} -dRewriteRule ^ – [L]RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]RewriteRule . index.php [L]
이 단계를 완료하고나면, 네트워크를 활성화하고 구성합니다. 다시 로그인해야 합니다.
위의 이메일 주소가 데이터베이스에 없으면 새 사용자를 만들 것입니다.
비밀번호를 설정하는 사용자 이름과 링크를 이 이메일 주소로 보낼 것입니다.
5️⃣ กรณีที่มัลติไซต์ไม่เหมาะ
มัลติไซต์เหมาะกับกรณีอย่างเว็บไซต์แยกตามภูมิภาค ที่ใช้ธีมและปลั๊กอินร่วมกันแต่ดูแลเนื้อหาแยกกัน ถ้าเว็บไซต์ต้องใช้ข้อมูลหรือผู้ใช้ร่วมกันอย่างใกล้ชิด เอกสารทางการระบุว่ามัลติไซต์อาจไม่ใช่วิธีที่ดีที่สุด
ถ้าต้องการแค่ให้ดีไซน์ดูต่างกัน ก็แก้ได้ในเว็บไซต์เดียวด้วยปลั๊กอินที่สลับธีมหรือสไตล์ชีต กรณีที่แต่ละกลุ่มผู้ใช้ต้องเห็นข้อมูลต่างกันเท่านั้น ก็จัดการในเว็บไซต์เดียวได้ด้วยปลั๊กอินที่เปลี่ยนสิทธิ์และเมนู
ตรวจสอบปลั๊กอินที่ใช้อยู่ก่อนด้วย ปลั๊กอินในไดเรกทอรีปลั๊กอินไม่ได้ทำงานกับมัลติไซต์ทุกตัว เอกสารทางการจึงแนะนำให้ตรวจสอบการรองรับที่หน้าปลั๊กอินหรือกับผู้พัฒนา
🔢 FAQ & เนื้อหาแนะนำ
เซิร์ฟเวอร์
การตั้งค่าพื้นฐาน htaccess ของ WordPress
บทความที่รวบรวมกฎพื้นฐานของ .htaccess สำหรับเว็บไซต์ทั่วไปและสำหรับมัลติไซต์แยกกัน
SEO
โดเมนย่อย VS โฟลเดอร์ย่อย
บทความที่เปรียบเทียบโดเมนย่อยกับโฟลเดอร์ย่อยว่าแบบไหนดีกว่าสำหรับ SEO
ตั้งค่า
ลิงก์ถาวรและ Slug ของ WordPress
อธิบายโครงสร้างลิงก์ถาวรและ Slug ที่กำหนดแยกในแต่ละเว็บย่อย
ℹ️ ประกาศเรื่องลิงก์แอฟฟิลิเอต
เนื้อหาของเว็บไซต์นี้มีลิงก์แอฟฟิลิเอต หากผู้เข้าชมซื้อสินค้าหรือบริการผ่านลิงก์เหล่านี้ เว็บไซต์นี้จะได้รับค่าคอมมิชชันจากผู้ขาย ในกระบวนการนี้ ราคาที่ผู้ซื้อจ่าย(ราคาจะลดลงเมื่อมีโปรโมชัน↓)จะไม่สูงขึ้นแต่อย่างใด ราคา ส่วนลด และข้อมูลสต็อกที่แสดงเป็นข้อมูล ณ เวลาที่เขียนและอาจต่างจากความเป็นจริง โปรดตรวจสอบกับผู้ขายอีกครั้งก่อนซื้อ การเลือกและการประเมินสินค้าเขียนตามเกณฑ์ของเราเอง และการได้รับค่าคอมมิชชันหรือไม่ไม่มีผลต่อลำดับการแนะนำหรือเนื้อหาการประเมิน