ความแตกต่างระหว่าง 403 และ 404
403 Forbidden
Server รู้ว่าคุณ Request อะไร แต่ ปฏิเสธ ที่จะให้เข้าถึง อาจเกิดจาก File Permission ไม่ถูก, Index File หาย, หรือถูก mod_security Block
404 Not Found
Server หา Resource ที่ Request ไม่พบ อาจเกิดจากไฟล์ถูกลบ, URL ผิด, Permalink เสีย หรือ RewriteRule ไม่ถูกต้อง
สาเหตุของ 403 Forbidden
วิเคราะห์ทีละสาเหตุเพื่อหาว่าเกิดจากอะไร:
1. File/Directory Permission ผิด
Permission ที่ถูกต้องบน Linux Hosting:
- Directory: 755 (rwxr-xr-x)
- ไฟล์ปกติ: 644 (rw-r--r--)
- ไฟล์ Config: 600 (rw-------)
ถ้า Directory มี Permission 700 Web Server (www-data/nobody) เข้าถึงไม่ได้ ต้องตั้งเป็น 755 แก้ผ่าน cPanel File Manager หรือ FTP Client
2. Index File หาย
ถ้า Directory ไม่มีไฟล์ index.html หรือ index.php และ Options -Indexes เปิดอยู่ Server จะส่ง 403 แทนที่จะแสดง Directory Listing แก้โดยสร้าง index.php หรือตรวจสอบว่า DirectoryIndex ตั้งค่าถูกต้อง
3. mod_security Block
Web Application Firewall อาจ Block Request ที่ดูเหมือน Attack สังเกตได้ว่าเป็น mod_security เพราะ Error Message มักมี "You don't have permission to access this resource" ตรวจ mod_security Log หรือปิดชั่วคราวใน cPanel ModSecurity
สาเหตุของ 404 Not Found
1. ไฟล์ไม่มีหรือถูกลบ
ตรวจสอบว่าไฟล์อยู่ใน Directory ที่ถูกต้องผ่าน cPanel File Manager ตรวจตัวพิมพ์ใหญ่-เล็กด้วยเพราะ Linux Case-sensitive ไฟล์ชื่อ About.html กับ about.html คือคนละไฟล์
2. WordPress Permalink เสีย
หลัง Migration หรือเปลี่ยน URL Structure WordPress Permalink อาจเสีย แก้ง่ายๆ:
- ไป WordPress Admin → Settings → Permalinks
- คลิก Save Changes โดยไม่ต้องเปลี่ยนอะไร
- WordPress จะ Regenerate .htaccess ให้อัตโนมัติ
3. RewriteRule ผิด
RewriteRule ที่ตั้งผิดอาจทำให้ URL ที่ถูกต้องถูก Rewrite ไปยัง Path ที่ไม่มี ตรวจสอบ .htaccess โดยเฉพาะ RewriteBase ต้องตรงกับ Path ที่เว็บอยู่
วิเคราะห์ Error ทีละขั้นตอน
- ตรวจสอบ Error Log ใน cPanel → Logs → Errors
- ใช้ curl ดู HTTP Status Code และ Header
- ตรวจสอบ File Permission ใน File Manager
- ตรวจสอบว่าไฟล์มีอยู่จริงและ Path ถูกต้อง
- ตรวจสอบ .htaccess ว่ามี Rule ที่อาจทำให้เกิด Error
- ถ้าเป็น 403 ตรวจ mod_security Log
ตั้ง Custom 404 Page
Custom 404 Page ช่วยรักษาประสบการณ์ผู้ใช้และลด Bounce Rate เพิ่มใน .htaccess:
ErrorDocument 404 /404.html
ErrorDocument 403 /403.html
หน้า 404.html ที่ดีควรมี:
- ข้อความที่เป็นมิตร อธิบายว่าหน้าที่ต้องการหาไม่พบ
- Navigation ไปยังหน้าสำคัญ เช่น หน้าแรก
- Search Box ให้ผู้ใช้ค้นหาต่อได้
- Link ไปยัง 5–10 บทความยอดนิยม
สำหรับ WordPress ติดตั้ง Plugin เช่น "404 Page" หรือสร้าง 404.php ใน Theme
ตรวจสอบว่า Error แก้ถูกต้องแล้ว
# ตรวจ HTTP Status Code
curl -s -o /dev/null -w "%{http_code}" https://yoursite.com/page
# ดู Header ทั้งหมด
curl -I https://yoursite.com/page
# ตรวจ Permission ไฟล์บน SSH
ls -la /home/username/public_html/
# หาไฟล์ที่มี Permission ผิด (ไม่ควรมี 777)
find /home/username/public_html -perm 777
# ทดสอบ 404 Custom Page
curl -s -o /dev/null -w "%{http_code}" https://yoursite.com/nonexistent-page
แก้ปัญหาที่พบบ่อย
Error: 403 ทุกหน้าบนเว็บหลัง Migration
สาเหตุที่พบบ่อยที่สุดคือ Permission ของ public_html Directory ผิด ต้องเป็น 755 ไม่ใช่ 700 และ Owner ต้องเป็น User ของ Hosting ไม่ใช่ root รันคำสั่ง chmod 755 public_html และ chown username:username public_html
Error: WordPress Post ทุกอันเป็น 404 ยกเว้นหน้าแรก
Permalink .htaccess Rule ของ WordPress หาย ให้ไปที่ Settings → Permalinks แล้วกด Save Changes อย่างเดียว ถ้ายังไม่หาย ตรวจว่า AllowOverride All ถูกตั้งค่าใน Apache Config
Error: 404 เฉพาะบาง URL ที่มีตัวพิมพ์ใหญ่
Linux File System เป็น Case-sensitive ถ้า URL ใช้ตัวพิมพ์ใหญ่แต่ไฟล์จริงเป็นตัวพิมพ์เล็ก จะเกิด 404 แก้โดยเปลี่ยนชื่อไฟล์ให้ตรงกัน หรือใช้ RewriteRule แปลง URL เป็น Lowercase
Error: 403 เฉพาะเวลา Upload ไฟล์ผ่าน WordPress
Permission ของ wp-content/uploads ผิด ต้องเป็น 755 และ Owner ถูกต้อง นอกจากนี้ mod_security อาจ Block ไฟล์บางประเภท ตรวจสอบ mod_security Log หรือขอ Support Whitelist File Type ที่ต้องการ Upload
คำถามที่พบบ่อย
403 กับ 401 ต่างกันอย่างไร?
401 Unauthorized หมายถึงยังไม่ได้ Authentication (ยังไม่ Login) ส่วน 403 Forbidden หมายถึง Login แล้วแต่ไม่มีสิทธิ์เข้าถึง ในทางปฏิบัติ Server บางตัวใช้ 403 แทน 401 เพื่อซ่อนว่า Resource มีอยู่จริง
Custom 404 Page ช่วย SEO ได้ไหม?
Custom 404 ช่วยลด Bounce Rate และรักษาผู้ใช้ไว้ในเว็บ ส่วน SEO โดยตรงนั้น 404 เองไม่ใช่ปัจจัยลบ แต่การมีหน้า 404 จำนวนมากที่ Google Crawl อยู่อาจเสีย Crawl Budget แนะนำให้ Redirect หน้า 404 สำคัญไปยังหน้าที่ใกล้เคียงแทน
จะรู้ได้อย่างไรว่าเว็บมี 404 Pages กี่หน้า?
ตรวจสอบได้หลายวิธี: Google Search Console → Coverage, Screaming Frog SEO Spider สแกนเว็บทั้งหมด, หรือดู Access Log แล้ว grep หา HTTP 404 Response Code ด้วยคำสั่ง grep " 404 " access_log | wc -l
สำหรับผู้ที่ต้องการ Hosting ที่มีระบบจัดการ Error Pages และ .htaccess แบบยืดหยุ่น ลองดู asiagb.com/hosting.html บริการ Web Hosting ไทยที่รองรับการตั้งค่าขั้นสูงได้ครบ