cPanel
MIME Type คืออะไร และทำไมถึงสำคัญ
MIME Type (Multipurpose Internet Mail Extensions) คือมาตรฐานที่บอกให้ Browser หรือโปรแกรมรู้ว่า File ที่ถูกส่งมาจาก Server นั้นเป็น "ประเภทอะไร" ตัวอย่างเช่น เมื่อ Browser ดาวน์โหลด File นามสกุล .jpg Server จะส่ง Header Content-Type: image/jpeg มาด้วย เพื่อให้ Browser รู้ว่าต้องแสดงผลเป็นรูปภาพ ไม่ใช่ดาวน์โหลดเป็น Text ธรรมดา
ปัญหาเกิดขึ้นเมื่อเว็บไซต์ของเราใช้ File ประเภทใหม่ๆ ที่ Server ยังไม่รู้จัก เช่น Font Format .woff2 สำหรับ Web Font สมัยใหม่, รูปภาพ .webp ที่มีขนาดเล็กกว่า JPEG หรือ PNG, ไฟล์ .json สำหรับ API หรือ Manifest File ต่างๆ หาก Server ไม่รู้จัก MIME Type ของ File เหล่านี้ อาจเกิดปัญหาหลายอย่าง เช่น Browser ปฏิเสธการโหลด Font, รูปภาพไม่แสดง หรือ JavaScript Error เกิดขึ้นเพราะ Content-Type ไม่ตรง
MIME Type ที่มักต้องเพิ่มเองใน Shared Hosting
บน Shared Hosting ที่ใช้ Apache Web Server (ซึ่งเป็นมาตรฐานของ cPanel) มี MIME Type บางประเภทที่ไม่ได้ถูกตั้งค่าไว้ล่วงหน้า หรืออาจถูกตั้งค่าผิดในบาง Server Version ได้แก่:
- font/woff2 — Web Font รุ่นใหม่ (นามสกุล .woff2)
- image/webp — รูปภาพ WebP (นามสกุล .webp)
- application/json — JSON File (นามสกุล .json)
- application/manifest+json — PWA Manifest (นามสกุล .webmanifest)
- image/avif — รูปภาพ AVIF รุ่นใหม่ล่าสุด (นามสกุล .avif)
- video/mp4 — วิดีโอ MP4 ที่บาง Server อาจส่ง Header ผิด
- text/javascript — JavaScript File (นามสกุล .mjs สำหรับ ES Module)
วิธีเพิ่ม MIME Type ผ่าน cPanel (แบบ GUI)
cPanel มีหน้าจัดการ MIME Type ที่ใช้งานง่าย ทำตามขั้นตอนนี้ได้เลย:
- เข้า cPanel ของ Hosting ที่ URL ประมาณ
yourdomain.com/cpanelหรือyourdomain.com:2083 - ค้นหาคำว่า "MIME" ในช่อง Search หรือเลื่อนไปที่หัวข้อ Advanced
- คลิกที่ MIME Types
- ในหน้า MIME Types จะเห็น 2 ส่วน คือ "User-defined MIME Types" (ของเราเอง) และ "System MIME Types" (ที่ Server กำหนดไว้แล้ว)
- กรอกข้อมูลในฟอร์ม Create a MIME Type:
- MIME Type: ระบุ MIME Type เช่น
font/woff2 - Extension(s): ระบุนามสกุล File เช่น
woff2(ไม่ต้องมีจุดนำหน้า)
- MIME Type: ระบุ MIME Type เช่น
- คลิก Add เพื่อบันทึก
วิธีเพิ่ม MIME Type ผ่าน .htaccess (แนะนำสำหรับ Developer)
อีกวิธีที่ยืดหยุ่นกว่าคือการเพิ่ม MIME Type ผ่านไฟล์ .htaccess ที่ Root ของเว็บไซต์ โดยใช้คำสั่ง AddType ซึ่งจะมีผลเฉพาะกับ Directory นั้นๆ และ Subdirectory ทั้งหมด ไม่กระทบกับ Website อื่นบน Server เดียวกัน
เปิดไฟล์ .htaccess ด้วย File Manager ใน cPanel หรือ FTP แล้วเพิ่มบรรทัดเหล่านี้:
# MIME Types สำหรับ Web Font
AddType font/woff2 .woff2
AddType font/woff .woff
AddType font/ttf .ttf
AddType font/otf .otf
# MIME Types สำหรับรูปภาพรุ่นใหม่
AddType image/webp .webp
AddType image/avif .avif
AddType image/svg+xml .svg
# MIME Types สำหรับ Data และ Manifest
AddType application/json .json
AddType application/manifest+json .webmanifest
AddType text/javascript .mjs
# MIME Types สำหรับวิดีโอ
AddType video/mp4 .mp4
AddType video/webm .webm
.htaccess ไฟล์หลักที่ Root ไม่ใช่ใน wp-admin/ หรือ wp-content/ เพราะ WordPress จัดการ .htaccess ของตัวเองอยู่แล้ว บล็อค MIME Type ที่เพิ่มควรอยู่ก่อนบล็อค # BEGIN WordPressตรวจสอบ MIME Type ที่ถูกต้องสำหรับ File แต่ละประเภท
ก่อนเพิ่ม MIME Type ต้องรู้ว่าค่าที่ถูกต้องคืออะไร ตารางนี้รวบรวม MIME Type มาตรฐานที่ใช้บ่อย:
.woff2→font/woff2.woff→font/woff.webp→image/webp.avif→image/avif.svg→image/svg+xml.json→application/json.webmanifest→application/manifest+json.mjs→text/javascript.mp4→video/mp4.webm→video/webm.wasm→application/wasm.csv→text/csv
ตัวอย่างจริง: แก้ปัญหา Web Font ไม่โหลด
สถานการณ์ที่พบบ่อยคือเว็บไซต์ใช้ Font ที่ Download มาเก็บไว้เอง (Self-hosted Font) เช่น Google Font ที่โหลดมาเก็บใน Hosting แล้ว Font ไม่แสดงผลบน Browser บางตัว ปัญหานี้มักเกิดจาก Server ไม่รู้จัก MIME Type ของ .woff2
วิธีแก้คือเพิ่มบรรทัดนี้ใน .htaccess:
# แก้ปัญหา Web Font ไม่โหลด
AddType font/woff2 .woff2
AddType font/woff .woff
# อนุญาต Cross-Origin สำหรับ Font (จำเป็นถ้า Font อยู่ต่าง Subdomain)
<FilesMatch "\.(woff|woff2|ttf|otf|eot)$">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
Access-Control-Allow-Origin มาพร้อมกัน แม้ MIME Type จะถูกต้องแล้วก็ตาม จึงแนะนำให้เพิ่มทั้งสองส่วนพร้อมกันการลบ MIME Type ที่เพิ่มผิดออกจาก cPanel
ถ้าเพิ่ม MIME Type ผิดหรือต้องการเปลี่ยนค่า ให้ทำตามนี้:
- กลับไปที่หน้า MIME Types ใน cPanel
- ค้นหา MIME Type ที่ต้องการลบใน "User-defined MIME Types"
- คลิกปุ่ม Delete ที่อยู่ด้านขวา
- ยืนยันการลบ
- หากต้องการแก้ไข ให้ลบออกก่อนแล้วเพิ่มใหม่ด้วยค่าที่ถูกต้อง
สำหรับผู้ที่กำลังมองหา Hosting คุณภาพที่ตั้งค่า MIME Type และ Server ได้ยืดหยุ่น ลองดูที่ asiagb.com ผู้ให้บริการ Web Hosting และ VPS สัญชาติไทย ใช้ DirectAdmin รองรับการปรับแต่ง Server ได้เต็มรูปแบบ พร้อมทีม Support ภาษาไทยช่วยดูแล
ตรวจสอบว่า MIME Type ทำงานถูกต้อง
หลังจากเพิ่ม MIME Type แล้ว ให้ตรวจสอบว่าทำงานถูกต้องโดยใช้วิธีเหล่านี้:
# ตรวจสอบ Content-Type ที่ Server ส่งมาด้วย curl
curl -I https://yourdomain.com/fonts/myfont.woff2
# ดู Header โดยละเอียดทุก Header
curl -v https://yourdomain.com/assets/data.json 2>&1 | grep -i "content-type"
# ทดสอบ WebP image
curl -I https://yourdomain.com/images/hero.webp
# ทดสอบ PWA Manifest
curl -I https://yourdomain.com/manifest.webmanifest
# ทดสอบ JavaScript ES Module
curl -I https://yourdomain.com/js/app.mjs
content-type — ถ้าค่าถูกต้องแสดงว่า MIME Type ทำงานแล้วแก้ปัญหาที่พบบ่อย
Error: "Refused to apply style" หรือ Font ไม่แสดง
เกิดจาก Browser ปฏิเสธโหลด Web Font เพราะ MIME Type ไม่ถูกต้องหรือขาด CORS Header ให้ตรวจสอบ Console ใน DevTools จะเห็น Error ประมาณ "OTS parsing error" หรือ "Failed to decode downloaded font" วิธีแก้คือเพิ่ม MIME Type font/woff2 และ font/woff ใน .htaccess พร้อมกับ Access-Control-Allow-Origin Header
Error: "Failed to load resource: 404" สำหรับ .webmanifest
ปัญหานี้อาจเกิดจาก Server ไม่รู้จักนามสกุล .webmanifest แล้ว Block ไว้ ให้เพิ่ม MIME Type นี้ใน cPanel หรือ .htaccess:
AddType application/manifest+json .webmanifest
หาก Server ยังคืน 404 ให้ตรวจสอบว่าไฟล์อยู่ในตำแหน่งที่ถูกต้องด้วย File Manager ใน cPanel
Error: "Blocked loading mixed active content" สำหรับ .json
หาก Browser แสดง Error นี้เมื่อโหลด JSON File อาจเป็นเพราะเว็บใช้ HTTPS แต่ไปโหลด JSON จาก HTTP URL ให้แก้ไข URL ใน Code ให้ใช้ https:// ทุกที่ ไม่ใช่ปัญหาของ MIME Type โดยตรง
Error: "Invalid MIME type" เมื่อเพิ่มใน cPanel GUI
cPanel มีการตรวจสอบรูปแบบ MIME Type ที่เข้มงวด ต้องเป็นรูปแบบ type/subtype เท่านั้น เช่น application/json ห้ามมีช่องว่างหรืออักขระพิเศษ ถ้าพิมพ์ผิดระบบจะไม่บันทึก ให้ตรวจสอบการสะกดให้ถูกต้องก่อนกด Add
เพิ่ม MIME Type แล้วแต่ยังไม่ทำงาน
อาจเป็นเพราะ Browser Cache ยังเก็บ Response เก่าไว้ ให้ Clear Cache ด้วย Ctrl+Shift+Delete ใน Chrome แล้วลองโหลดใหม่ หรือใช้ Incognito Mode เพื่อทดสอบ นอกจากนี้ถ้า Hosting ใช้ Litespeed Web Server แทน Apache การตั้งค่าบางอย่างในไฟล์ .htaccess อาจทำงานต่างกัน ให้ติดต่อ Support ของ Hosting เพื่อยืนยัน
คำถามที่พบบ่อย
ถาม: ถ้าไม่ตั้งค่า MIME Type จะเกิดอะไรขึ้น?
ตอบ: Server จะส่ง Default MIME Type ซึ่งมักเป็น application/octet-stream ทำให้ Browser ไม่รู้ว่าควรแสดงผล File นั้นอย่างไร อาจเกิดปัญหา Font ไม่โหลด, รูปภาพไม่แสดง, หรือ Browser สั่งดาวน์โหลด File แทนที่จะแสดงผล ซึ่งกระทบต่อ UX และ SEO ของเว็บโดยตรง
ถาม: ต้องเพิ่ม MIME Type ซ้ำในทุก Subdomain ไหม?
ตอบ: ถ้าเพิ่มผ่าน cPanel GUI จะมีผลเฉพาะ Account Hosting นั้น ซึ่งครอบคลุมทุก Subdomain ที่อยู่ใน Account เดียวกัน แต่ถ้าเพิ่มผ่าน .htaccess จะมีผลเฉพาะ Directory นั้นและ Subdirectory เท่านั้น ควรวางไว้ที่ Root ของแต่ละ Domain/Subdomain ตามความต้องการ
ถาม: MIME Type กับ Content-Type Header ต่างกันอย่างไร?
ตอบ: MIME Type คือ "ประเภทของข้อมูล" เช่น image/webp ส่วน Content-Type Header คือ HTTP Header ที่ Server ใช้ส่ง MIME Type ไปให้ Browser ในรูปแบบ Content-Type: image/webp พูดง่ายๆ คือ MIME Type คือ "ชื่อประเภท" และ Content-Type Header คือ "ช่องทางที่ Server ส่งชื่อนั้นมาให้ Browser" การตั้งค่า MIME Type ใน cPanel หรือ .htaccess ก็คือการบอกให้ Server ส่ง Content-Type Header ที่ถูกต้องออกไปนั่นเอง