Maintenance Mode คืออะไร ใช้เมื่อไหร่
Maintenance Mode คือสถานะที่เว็บแสดงหน้าแจ้งว่ากำลังปรับปรุง แทนที่จะให้ผู้เข้าชมเห็นเว็บที่ยังไม่เสร็จหรืออยู่ระหว่างซ่อมแซม เหมาะสำหรับสถานการณ์เหล่านี้
- ระหว่างการอัปเดต WordPress core, plugin หรือ theme ขนาดใหญ่
- ระหว่างย้าย WordPress ไปยัง hosting ใหม่
- ระหว่างออกแบบหน้าเว็บใหม่หรือ redesign ครั้งใหญ่
- ระหว่าง database maintenance หรือ backup
- ก่อน launch เว็บใหม่ (Coming Soon mode)
วิธีที่ 1 — ใช้ Plugin SeedProd (ง่ายที่สุด)
SeedProd เป็น plugin ยอดนิยมสำหรับทำ Maintenance Mode และ Coming Soon page มี drag-and-drop builder ออกแบบหน้าได้สวยงามโดยไม่ต้องเขียน code
- ติดตั้ง SeedProd จาก WordPress Plugin Directory
- ไปที่ SeedProd > Pages
- คลิก "Set Up a Maintenance Mode Page"
- เลือก template หรือเริ่มจากหน้าว่าง
- แก้ไขข้อความ, ใส่โลโก้ และเพิ่ม countdown timer (ถ้าต้องการ)
- Toggle สถานะเป็น "Active" แล้ว Publish
SeedProd จะอนุญาต admin ที่ login แล้วเข้าถึงเว็บได้ตามปกติ ส่วน visitor ทั่วไปจะเห็นหน้า maintenance
วิธีที่ 2 — ใช้ Plugin WP Maintenance Mode
WP Maintenance Mode เป็น plugin ฟรีที่เบาและตั้งค่าง่าย ไปที่ Settings > WP Maintenance Mode จะมีตัวเลือก
- General: เปิด/ปิด maintenance mode
- Design: แก้ไข background, text, หน้าตา
- Modules: เพิ่ม countdown, subscribe form
- Manage Bot: อนุญาต crawler เข้าถึง sitemap ได้
วิธีที่ 3 — สร้างไฟล์ .maintenance แบบ Manual
WordPress มี built-in maintenance mode ที่ activate โดยการสร้างไฟล์ .maintenance ใน root directory
# สร้างไฟล์ .maintenance ใน WordPress root
# ผ่าน cPanel File Manager หรือ FTP
# เนื้อหาในไฟล์ .maintenance (PHP timestamp)
<?php $upgrading = time(); ?>
เมื่อไฟล์นี้มีอยู่ WordPress จะแสดงหน้า maintenance อัตโนมัติ ลบไฟล์ออกเมื่อต้องการปิด maintenance mode
วิธีที่ 4 — Custom Maintenance Page ด้วย .htaccess
วิธีนี้ให้การควบคุมมากที่สุด สามารถ serve static HTML ได้โดยไม่ต้องพึ่ง WordPress และส่ง 503 header ที่ถูกต้อง
สร้างไฟล์ maintenance.html
<!DOCTYPE html>
<html lang="th">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>เว็บอยู่ระหว่างปรับปรุง</title>
<style>
body{font-family:sans-serif;background:#0c4a6e;color:#fff;
display:flex;align-items:center;justify-content:center;
min-height:100vh;text-align:center;margin:0}
h1{font-size:2rem;margin-bottom:1rem}
p{color:#bae6fd;font-size:1.1rem}
</style>
</head>
<body>
<div>
<h1>กำลังปรับปรุงเว็บไซต์</h1>
<p>เราจะกลับมาเร็วๆ นี้ ขออภัยในความไม่สะดวก</p>
</div>
</body>
</html>
ตั้งค่า .htaccess
# Maintenance Mode - เปิดโดยลบ # ออก
# อนุญาต IP ของคุณ (แทนที่ด้วย IP จริง)
# ErrorDocument 503 /maintenance.html
# <IfModule mod_rewrite.c>
# RewriteEngine On
# RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000
# RewriteCond %{REQUEST_URI} !^/maintenance\.html$
# RewriteCond %{REQUEST_URI} !^/wp-content/.*
# RewriteRule ^(.*)$ /maintenance.html [R=503,L]
# RewriteRule ^maintenance\.html$ - [L]
# </IfModule>
# Header always add Retry-After "3600"
อนุญาต Admin Bypass Maintenance Mode
สำหรับ maintenance mode ที่ทำผ่าน code เองโดยไม่ใช้ plugin สามารถ bypass ด้วย IP whitelist หรือ cookie ได้
// เพิ่มใน functions.php ของ theme
function custom_maintenance_mode() {
// ถ้า admin ที่ login แล้ว ให้ผ่านได้
if (is_user_logged_in() && current_user_can('administrator')) {
return;
}
// ถ้าไม่ใช่ frontend เช่น wp-login.php ให้ผ่านได้
if (is_admin()) {
return;
}
// เปิด maintenance mode
$maintenance_enabled = true; // เปลี่ยนเป็น false เพื่อปิด
if ($maintenance_enabled) {
header('HTTP/1.1 503 Service Unavailable');
header('Retry-After: 3600');
include ABSPATH . 'maintenance.html';
exit;
}
}
add_action('wp', 'custom_maintenance_mode');
ตรวจสอบว่า Maintenance Mode ทำงานถูกต้อง
# ตรวจสอบ HTTP status code
curl -o /dev/null -w "%{http_code}" https://yoursite.com
# ต้องได้ 503 เมื่อ maintenance mode เปิดอยู่
# ตรวจสอบ Retry-After header
curl -I https://yoursite.com | grep -i retry-after
# ทดสอบว่า admin ยังเข้า wp-admin ได้
curl -o /dev/null -w "%{http_code}" https://yoursite.com/wp-admin/
# ทดสอบ anonymous visitor
curl -A "Mozilla/5.0" -o /dev/null -w "%{http_code}" https://yoursite.com
แก้ปัญหาที่พบบ่อย
Maintenance Mode เปิดอยู่แล้วแต่ไม่หาย
ตรวจสอบว่าไม่มีไฟล์ .maintenance ค้างอยู่ใน root directory ผ่าน cPanel File Manager (เปิดดู hidden file ด้วย) และ clear cache ใน caching plugin ด้วย
เปิด Maintenance Mode แล้วตัวเองเข้าไม่ได้
ถ้าใช้ IP whitelist ตรวจสอบว่า IP ของคุณถูกต้อง (ดูได้ที่ whatismyip.com) ถ้าใช้ plugin ให้ login ผ่าน yoursite.com/wp-login.php โดยตรง เพราะ plugin ส่วนใหญ่อนุญาต wp-login.php ผ่านได้
Googlebot ไม่สามารถ Crawl เว็บระหว่าง Maintenance
ถ้า maintenance mode ส่ง 503 อย่างถูกต้อง Googlebot จะรอแล้วกลับมา crawl ใหม่ตาม Retry-After header ห้ามปิด maintenance นานเกิน 1–2 วัน เพราะ Google อาจ deindex บางหน้า
Maintenance Page แสดงผิดบน Mobile
ตรวจสอบว่าไฟล์ maintenance.html มี meta viewport tag และ CSS ที่ responsive ถ้าใช้ plugin ให้ตรวจสอบ preview บน mobile ด้วย browser developer tools
คำถามที่พบบ่อย
ต้องเปิด Maintenance Mode ทุกครั้งที่อัปเดต Plugin ไหม
ไม่จำเป็น การอัปเดต plugin ส่วนใหญ่ใช้เวลาไม่กี่วินาทีถึงไม่กี่นาที WordPress จัดการ transition ได้ดี แต่ถ้าเป็นการ major update ที่มีการ migrate database หรือ file structure ใหม่ ควรเปิด maintenance mode
Coming Soon Mode กับ Maintenance Mode ต่างกันอย่างไร
Coming Soon Mode ใช้ตอนเว็บยังไม่ launch ยังไม่มีเนื้อหา มักส่ง HTTP 200 พร้อมหน้า teaser สวยงาม ส่วน Maintenance Mode ใช้ตอนเว็บ launch แล้วแต่ปิดชั่วคราวเพื่อซ่อมบำรุง ควรส่ง HTTP 503
การเปิด Maintenance Mode นานๆ กระทบ SEO ไหม
ถ้าส่ง 503 + Retry-After อย่างถูกต้อง Google จะรอ แต่ถ้าปิดนานเกิน 2–3 วันโดยไม่มี Retry-After อาจส่งผลต่อ index ได้ สำหรับ maintenance นาน ให้พิจารณาทำในช่วงที่ traffic น้อย เช่น ตี 2–4 และแจ้งผู้ใช้ล่วงหน้าผ่าน social media