ตั้งค่า MIME Type ใน cPanel สำหรับ File พิเศษ

เพิ่มและแก้ไข MIME Type ผ่าน cPanel ให้ Browser รู้จัก .woff2, .webp, .json และ File Type อื่นๆ

ตั้งค่า MIME Type ใน cPanel สำหรับ File พิเศษ 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 ได้แก่:

วิธีเพิ่ม MIME Type ผ่าน cPanel (แบบ GUI)

cPanel มีหน้าจัดการ MIME Type ที่ใช้งานง่าย ทำตามขั้นตอนนี้ได้เลย:

  1. เข้า cPanel ของ Hosting ที่ URL ประมาณ yourdomain.com/cpanel หรือ yourdomain.com:2083
  2. ค้นหาคำว่า "MIME" ในช่อง Search หรือเลื่อนไปที่หัวข้อ Advanced
  3. คลิกที่ MIME Types
  4. ในหน้า MIME Types จะเห็น 2 ส่วน คือ "User-defined MIME Types" (ของเราเอง) และ "System MIME Types" (ที่ Server กำหนดไว้แล้ว)
  5. กรอกข้อมูลในฟอร์ม Create a MIME Type:
    • MIME Type: ระบุ MIME Type เช่น font/woff2
    • Extension(s): ระบุนามสกุล File เช่น woff2 (ไม่ต้องมีจุดนำหน้า)
  6. คลิก Add เพื่อบันทึก
หมายเหตุ: หาก MIME Type นั้นมีอยู่ใน System MIME Types อยู่แล้ว ไม่จำเป็นต้องเพิ่มซ้ำ ระบบจะใช้ค่าจาก System ให้อัตโนมัติ ให้เพิ่มเฉพาะที่ไม่มีในรายการ System เท่านั้น

วิธีเพิ่ม 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
Tip: ถ้าเว็บเป็น WordPress ให้เพิ่ม MIME Type ใน .htaccess ไฟล์หลักที่ Root ไม่ใช่ใน wp-admin/ หรือ wp-content/ เพราะ WordPress จัดการ .htaccess ของตัวเองอยู่แล้ว บล็อค MIME Type ที่เพิ่มควรอยู่ก่อนบล็อค # BEGIN WordPress

ตรวจสอบ MIME Type ที่ถูกต้องสำหรับ File แต่ละประเภท

ก่อนเพิ่ม MIME Type ต้องรู้ว่าค่าที่ถูกต้องคืออะไร ตารางนี้รวบรวม MIME Type มาตรฐานที่ใช้บ่อย:

ตัวอย่างจริง: แก้ปัญหา 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>
Tip: Browser บางตัวโดยเฉพาะ Firefox จะไม่โหลด Font ถ้า Server ไม่ส่ง Header Access-Control-Allow-Origin มาพร้อมกัน แม้ MIME Type จะถูกต้องแล้วก็ตาม จึงแนะนำให้เพิ่มทั้งสองส่วนพร้อมกัน

การลบ MIME Type ที่เพิ่มผิดออกจาก cPanel

ถ้าเพิ่ม MIME Type ผิดหรือต้องการเปลี่ยนค่า ให้ทำตามนี้:

  1. กลับไปที่หน้า MIME Types ใน cPanel
  2. ค้นหา MIME Type ที่ต้องการลบใน "User-defined MIME Types"
  3. คลิกปุ่ม Delete ที่อยู่ด้านขวา
  4. ยืนยันการลบ
  5. หากต้องการแก้ไข ให้ลบออกก่อนแล้วเพิ่มใหม่ด้วยค่าที่ถูกต้อง
สำคัญ: ไม่สามารถแก้ไข System MIME Types ที่ cPanel กำหนดไว้ได้โดยตรง แต่สามารถ Override ได้โดยการเพิ่ม User-defined MIME Type ที่มี Extension เดียวกัน ซึ่งจะมีความสำคัญกว่าค่า System

สำหรับผู้ที่กำลังมองหา 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
Tip: ใน Chrome DevTools กด F12 แล้วไปที่แท็บ Network กด Ctrl+R เพื่อโหลดหน้าใหม่ แล้วคลิกที่ File ที่ต้องการตรวจ ดูที่คอลัมน์ "Type" และใน Headers Tab ให้ดู Response Headers ที่ 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 ที่ถูกต้องออกไปนั่นเอง