WordPress Multisite เป็นฟีเจอร์ในตัวของ WordPress ที่ช่วยให้คุณบริหาร เว็บไซต์หลายเว็บภายใต้ Installation เดียว โดยไม่ต้องติดตั้ง WordPress แยกกันทีละครั้ง หนึ่งในรูปแบบที่นิยมมากที่สุดคือ Subdomain Mode ซึ่งแต่ละ Sub-site จะเปิดที่ sitename.yourdomain.com แทนที่จะแชร์ path ร่วมกัน บทความนี้จะพาคุณตั้งค่าตั้งแต่ต้นจนจบ ตั้งแต่การเตรียม Server ไปจนถึงการเพิ่ม Sub-site แรกและแก้ปัญหาที่พบบ่อย
WordPress Multisite คืออะไร และแบบ Subdomain ดีอย่างไร
WordPress Multisite (เดิมชื่อ WordPress MU หรือ Multi-User) คือโหมดพิเศษที่เปิดใช้งานได้ใน WordPress ทุกเวอร์ชัน มันสร้าง Network of Sites ที่ใช้โค้ด, ปลั๊กอิน และธีมชุดเดียวกัน แต่แต่ละ Site มี Database Tables แยก, Admin Panel แยก และเนื้อหาแยกจากกันโดยสมบูรณ์
รูปแบบ Subdomain หมายความว่า Sub-site จะมี URL ในรูปแบบ blog.yourdomain.com, shop.yourdomain.com, team.yourdomain.com แทนที่จะเป็น yourdomain.com/blog แบบ Subdirectory ข้อดีของ Subdomain Mode มีดังนี้:
- URL ดูเป็นเอกเทศ — แต่ละ Sub-site มี URL ที่ดูเป็นแบรนด์แยกกัน เหมาะกับการมีลูกค้าหลายราย หรือแผนกหลายแผนกในองค์กร
- SSL ครอบคลุมทีเดียวด้วย Wildcard — ใช้
*.yourdomain.comWildcard SSL ครอบคลุมทุก Sub-site โดยไม่ต้องออก Certificate แยก - ติดตั้งได้ทั้งบน WordPress ใหม่และเดิม — ต่างจาก Subdirectory Mode ที่มีข้อจำกัดเรื่อง WordPress ที่ใช้งานมาแล้ว
- Scale ได้ง่าย — เพิ่ม Sub-site ใหม่ผ่าน Network Admin ไม่กี่คลิก โดยไม่ต้องติดตั้ง WordPress ใหม่
- บริหาร Plugin และ Theme จากศูนย์กลาง — อัพเดต Plugin ครั้งเดียว ทุก Sub-site ได้รับเวอร์ชันใหม่พร้อมกัน
สิ่งที่ต้องเตรียมก่อนเริ่มตั้งค่า
ก่อนเปิดใช้งาน Multisite โหมด Subdomain มีสิ่งที่ต้องเตรียมให้ครบ ถ้าขาดข้อใดข้อหนึ่งจะทำให้ Sub-site ไม่สามารถเปิดได้:
| สิ่งที่ต้องเตรียม | รายละเอียด | จำเป็น? |
|---|---|---|
| Wildcard DNS Record | *.yourdomain.com A Record ชี้ไป Server IP |
บังคับ |
| Wildcard SSL Certificate | ครอบคลุม *.yourdomain.com |
แนะนำอย่างยิ่ง |
| PHP 8.0+ และ MySQL 5.7+ | WordPress รุ่นใหม่ต้องการ PHP ≥ 7.4 | บังคับ |
| mod_rewrite / .htaccess | Apache ต้องเปิด mod_rewrite (Nginx ใช้ server block) | บังคับ |
| Backup ล่าสุด | Backup ไฟล์และ Database ก่อนเปิด Multisite | แนะนำอย่างยิ่ง |
ขั้นตอนที่ 1 — เปิดใช้งาน Multisite ใน wp-config.php
เข้าถึงไฟล์ wp-config.php ที่ root ของ WordPress ผ่าน FTP, File Manager ใน DirectAdmin หรือ SSH แล้วเพิ่มบรรทัดนี้ เหนือบรรทัด /* That's all, stop editing! */
/* Enable WordPress Multisite */ define( 'WP_ALLOW_MULTISITE', true );
บันทึกไฟล์แล้ว Refresh หน้า WordPress Admin หลังจากนั้นไปที่เมนู Tools › Network Setup จะปรากฏขึ้นมาให้คลิก
ขั้นตอนที่ 2 — ตั้งค่า Network บนหน้า Network Setup
หน้า Network Setup จะให้เลือกรูปแบบ URL ของ Sub-sites:
- Sub-domains — เลือกตัวเลือกนี้ เพื่อใช้รูปแบบ
site1.yourdomain.com - Sub-directories — ใช้รูปแบบ
yourdomain.com/site1(ไม่ใช้ในบทความนี้)
ใส่ชื่อ Network (เช่น "My WordPress Network") และอีเมล Admin แล้วคลิก Install จากนั้น WordPress จะแสดง Code Snippets 2 ชุดที่ต้องนำไปแทรก:
Code Snippet ที่ 1 — เพิ่มใน wp-config.php
define( 'MULTISITE', true ); define( 'SUBDOMAIN_INSTALL', true ); define( 'DOMAIN_CURRENT_SITE', 'yourdomain.com' ); define( 'PATH_CURRENT_SITE', '/' ); define( 'SITE_ID_CURRENT_SITE', 1 ); define( 'BLOG_ID_CURRENT_SITE', 1 );
วางบล็อกนี้ต่อจาก define( 'WP_ALLOW_MULTISITE', true ); ที่เพิ่งเพิ่มไปในขั้นตอนที่ 1
Code Snippet ที่ 2 — เพิ่มใน .htaccess
เปิดไฟล์ .htaccess ที่ root WordPress แล้วแทนที่ rule WordPress เดิมทั้งหมดด้วย rule ใหม่ที่ WordPress แสดงให้ ตัวอย่างทั่วไปมีลักษณะดังนี้:
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]
หลังแก้ไขทั้งสองไฟล์แล้ว Log In ใหม่อีกครั้ง (WordPress บังคับ) แล้วไปที่ My Sites › Network Admin เพื่อจัดการ Network
ขั้นตอนที่ 3 — ตั้งค่า Wildcard DNS Record
เพื่อให้ Sub-site อย่าง shop.yourdomain.com หรือ blog.yourdomain.com ทำงานได้ ต้องมี Wildcard DNS A Record ใน Zone File ของโดเมน วิธีตั้งค่าใน DirectAdmin ของ AsiaGB:
- เข้า DirectAdmin › DNS Management
- เลือกโดเมนที่ใช้
- กด Add Record
- ใส่ค่าดังนี้:
Name: * Type: A Value: [IP Address ของ Hosting Server ของคุณ] TTL: 14400
IP Address ของ Server ดูได้จาก DirectAdmin › Account Manager › DNS Management หรือดูจาก IP ของ A Record หลักของโดเมน หลังบันทึก รอการ Propagate DNS ประมาณ 5–30 นาที ทดสอบด้วยคำสั่ง nslookup test.yourdomain.com ควรได้ IP ของ Server กลับมา
เคล็ดลับ: หากใช้ Cloudflare เป็น DNS ให้เพิ่ม Wildcard Record ใน Cloudflare Dashboard (**Name:** * **Type:** A **Content:** [Server IP]) และเลือก Proxy Status เป็น DNS only (สีเทา) ก่อน ไม่ใช่ Proxied (สีส้ม) มิฉะนั้น SSL Wildcard ที่ออกผ่าน Let's Encrypt จะไม่สามารถ Verify ได้ด้วย HTTP Challenge ให้เปลี่ยนไปใช้ DNS Challenge แทน
ขั้นตอนที่ 4 — ติดตั้ง Wildcard SSL
Wildcard SSL ครอบคลุมทุก Subdomain ของโดเมน ทำให้ไม่ต้องออก Certificate แยกสำหรับแต่ละ Sub-site ใน DirectAdmin ของ AsiaGB สามารถ Request Let's Encrypt Wildcard ได้ดังนี้:
- เข้า DirectAdmin › SSL Certificates
- เลือก Free & automatic certificate from Let's Encrypt
- ใส่ Domain names รวมถึง
yourdomain.comและ*.yourdomain.com - เลือก Use an acme challenge to get the certificate
- กด Save
สำหรับ Let's Encrypt Wildcard ต้องใช้ DNS Challenge (ACME DNS-01) ซึ่ง DirectAdmin บาง Version รองรับอัตโนมัติ ถ้า Hosting รองรับ DirectAdmin API จะสะดวกที่สุด หรือใช้ SSL Wildcard เชิงพาณิชย์จาก AsiaGB ซึ่งรองรับการ Verify แบบ Email/File และออก Certificate ภายใน 15 นาที
# ทดสอบว่า SSL ครอบคลุม Wildcard แล้วหรือยัง openssl s_client -connect test.yourdomain.com:443 -servername test.yourdomain.com 2>/dev/null | openssl x509 -noout -subject -altnames
ผลลัพธ์ควรมี DNS:*.yourdomain.com ใน Subject Alternative Names
ขั้นตอนที่ 5 — เพิ่ม Sub-site แรกใน Network
เมื่อตั้งค่า DNS และ SSL เสร็จแล้ว ให้เพิ่ม Sub-site ผ่าน Network Admin:
- เข้า My Sites › Network Admin › Sites
- คลิก Add New
- กรอก Site Address (ชื่อ Subdomain) เช่น
shop(จะกลายเป็นshop.yourdomain.com) - กรอก Site Title, Site Language และ Admin Email
- คลิก Add Site
หลังเพิ่มแล้ว ทดสอบเข้า https://shop.yourdomain.com ควรเห็นหน้า WordPress ของ Sub-site ใหม่ และ https://shop.yourdomain.com/wp-admin ควรเข้า Admin ได้
ขั้นตอนที่ 6 — จัดการ Plugin และ Theme บน Network
ใน Multisite การบริหาร Plugin และ Theme แตกต่างจาก WordPress ปกติ เพราะมีระดับการจัดการ 2 ชั้น:
Network-Activated Plugin
Plugin ที่ activate ในระดับ Network จะมีผลกับทุก Sub-site โดยอัตโนมัติ และ Admin ของแต่ละ Sub-site ไม่สามารถ deactivate ได้ ใช้สำหรับ Security, Cache, SEO หลักของ Network:
# ตัวอย่าง Plugin ที่มักใช้ Network-Activate - Wordfence Security (ความปลอดภัยทั้ง Network) - LiteSpeed Cache (Cache รวม) - Yoast SEO (SEO settings ทุก Sub-site) - WP Mail SMTP (ตั้งค่า SMTP เดียว ส่งเมลทุก Sub-site)
Site-Activated Plugin
Network Admin สามารถอนุญาตให้ Sub-site Admin activate Plugin เองได้ โดยไปที่ Network Admin › Settings › Network Settings และเปิด "Allow site administrators to install plugins"
Theme
Theme ต้อง install ที่ Network Admin Level ก่อน จากนั้น Sub-site จึงจะเห็น Theme นั้นใน Appearance ถ้าต้องการให้ Sub-site ทุกอันใช้ Theme เดียวกัน ให้ Network Enable Theme นั้นแล้วแต่ละ Sub-site activate เอง หรือกด "Enable" ใน Network Admin > Themes เพื่อ Make Available to all sites
การตั้งค่า wp-config.php เพิ่มเติมเพื่อ Performance
เมื่อใช้งาน Multisite มีการตั้งค่าเพิ่มเติมใน wp-config.php ที่ช่วยให้ระบบทำงานได้ดีขึ้น โดยเฉพาะเรื่อง Upload Size และ Memory:
/* WordPress Multisite — Performance Tweaks */ // เพิ่ม Memory Limit สำหรับ Network define( 'WP_MEMORY_LIMIT', '256M' ); define( 'WP_MAX_MEMORY_LIMIT', '512M' ); // ขนาด Upload ต่อไฟล์ (MB) สำหรับแต่ละ Sub-site define( 'UPLOAD_SPACE_CHECK_DISABLED', true ); // ปิด storage quota check // หรือตั้งค่าใน Network Admin > Settings > Upload space check quota // เก็บ Revisions จำกัด define( 'WP_POST_REVISIONS', 5 ); // Auto-save interval (วินาที) define( 'AUTOSAVE_INTERVAL', 120 );
นอกจากนี้ควรตั้งค่า UPLOADS ให้ชัดเจนหาก Server มีปัญหาเรื่อง Path:
// กำหนด Upload Directory อย่างชัดเจน (ถ้าจำเป็น) define( 'UPLOADS', 'wp-content/uploads' );
การแก้ปัญหาที่พบบ่อย
เมื่อตั้งค่า Multisite แบบ Subdomain มักพบปัญหาเหล่านี้:
Sub-site เปิดแล้วขึ้น "Site not found" หรือ "Error establishing a database connection"
สาเหตุหลักคือ Wildcard DNS ยังไม่ Propagate หรือ Web Server ไม่ได้รับ Request ของ Subdomain นั้น ตรวจดังนี้:
- รัน
nslookup shop.yourdomain.comถ้าได้ IP ถูกต้องแปลว่า DNS OK แล้ว - ตรวจ Apache VirtualHost หรือ DirectAdmin ว่ามีการตั้งค่าให้รับ Wildcard Subdomain หรือไม่
- ใน DirectAdmin หน้า Subdomains บางครั้งต้องสร้าง Subdomain
*ก่อน เพื่อให้ Virtual Host รับ Request
SSL ไม่ครอบคลุม Subdomain ใหม่
ถ้าใช้ Let's Encrypt ปกติ (ไม่ใช่ Wildcard) ต้องขอ Certificate ใหม่ทุกครั้งที่เพิ่ม Sub-site ซึ่งยุ่งยากมาก จึงแนะนำให้ใช้ Wildcard SSL ตั้งแต่ต้น ถ้าใช้ Wildcard แล้วยังเจอ SSL Error ให้ตรวจว่า Certificate Renewal ยังทำงานอยู่และยังครอบคลุม *.yourdomain.com
Admin ของ Sub-site ไม่เห็น Plugin ที่ต้องการ
Plugin ต้องถูก Network Admin install ก่อน และต้อง "Enable" ให้ Sub-site ก่อน Sub-site Admin จะ activate ได้ ไปที่ Network Admin › Plugins แล้วคลิก "Network Enable" หรือ "Enable" ที่ Plugin นั้น
Redirect Loop หรือ Mixed Content บน HTTPS
เกิดเมื่อ WordPress เก็บ siteurl หรือ home เป็น http:// ใน Database แต่ Server บังคับ HTTPS แก้ด้วยการเพิ่มใน wp-config.php:
// บังคับ HTTPS ทุก Sub-site
define( 'FORCE_SSL_ADMIN', true );
// ถ้าอยู่หลัง Reverse Proxy/Load Balancer
if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) {
$_SERVER['HTTPS'] = 'on';
}
คำถามที่พบบ่อย (FAQ)
WordPress Multisite แบบ Subdomain ต้องการ Hosting แบบไหน
ต้องการ Hosting ที่รองรับ Wildcard DNS และ Wildcard SSL เพราะ Sub-site แต่ละอันจะเปิดที่ Subdomain เช่น site1.yourdomain.com, site2.yourdomain.com ดังนั้น DNS ต้องมี Wildcard A Record (*.yourdomain.com) และ SSL Wildcard ครอบคลุมทุก Subdomain Hosting ที่ให้สิทธิ์แก้ไข DNS Zone File และติดตั้ง Wildcard SSL ได้เองจะทำให้ตั้งค่าได้ง่ายและปลอดภัยที่สุด
เปิด Multisite แล้วปลั๊กอินเดิมใช้ได้ไหม
ปลั๊กอินส่วนใหญ่ใช้ได้ปกติ แต่มีความแตกต่างคือ Network Admin (Super Admin) เท่านั้นที่ activate ปลั๊กอินได้ในระดับ Network-wide หรือให้แต่ละ Sub-site admin activate เองก็ได้ บางปลั๊กอินที่เขียนมาไม่รองรับ Multisite อาจทำงานผิดปกติเมื่อ activate แบบ Network โดยเฉพาะปลั๊กอินที่ใช้ hard-coded absolute path ควรทดสอบใน Staging ก่อนเปิดใช้งานจริง
Multisite แบบ Subdomain กับ Subdirectory ต่างกันอย่างไร
Subdomain (site1.domain.com) ทำงานได้ทั้งกับ WordPress ที่ติดตั้งใหม่และที่มีอยู่เดิม เหมาะกับการมีหลายเว็บที่เป็นอิสระหรือลูกค้าคนละราย เพราะ URL ดูเป็นเอกเทศและตั้ง SSL Wildcard ครอบคลุมได้ทีเดียว ส่วน Subdirectory (domain.com/site1) ง่ายกว่าในแง่ไม่ต้องตั้ง DNS Wildcard แต่มีข้อจำกัดว่าต้องติดตั้งบน WordPress ใหม่เท่านั้น
ลบ Sub-site ออกจาก Network ได้ไหม ข้อมูลจะหายหรือเปล่า
ลบได้จาก Network Admin › Sites › Delete การลบแบบปกติจะลบ Database Tables และไฟล์ wp-content/uploads/sites/[site-id]/ ออกด้วย ถ้าต้องการเก็บข้อมูลไว้ก่อน ให้ Export ผ่าน Tools › Export ของ Sub-site นั้นก่อนเสมอ
Hosting ที่ออปติไมซ์สำหรับ WordPress
AsiaGB Hosting รองรับ PHP 8.3 MySQL LiteSpeed Cache และ WordPress Toolkit เริ่มต้น 500 บาท/ปี
ดูแพ็กเกจ Hosting