แก้ Error 403 และ 404 บน Hosting

วิเคราะห์สาเหตุและแนวทางแก้ไข HTTP Error ที่พบบ่อยที่สุด ทั้ง 403 Forbidden และ 404 Not Found พร้อม Custom Error Page

แก้ Error 403 และ 404 บน Hosting

ความแตกต่างระหว่าง 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 มี 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 อาจเสีย แก้ง่ายๆ:

  1. ไป WordPress Admin → Settings → Permalinks
  2. คลิก Save Changes โดยไม่ต้องเปลี่ยนอะไร
  3. WordPress จะ Regenerate .htaccess ให้อัตโนมัติ

3. RewriteRule ผิด

RewriteRule ที่ตั้งผิดอาจทำให้ URL ที่ถูกต้องถูก Rewrite ไปยัง Path ที่ไม่มี ตรวจสอบ .htaccess โดยเฉพาะ RewriteBase ต้องตรงกับ Path ที่เว็บอยู่

วิเคราะห์ Error ทีละขั้นตอน

  1. ตรวจสอบ Error Log ใน cPanel → Logs → Errors
  2. ใช้ curl ดู HTTP Status Code และ Header
  3. ตรวจสอบ File Permission ใน File Manager
  4. ตรวจสอบว่าไฟล์มีอยู่จริงและ Path ถูกต้อง
  5. ตรวจสอบ .htaccess ว่ามี Rule ที่อาจทำให้เกิด Error
  6. ถ้าเป็น 403 ตรวจ mod_security Log

ตั้ง Custom 404 Page

Custom 404 Page ช่วยรักษาประสบการณ์ผู้ใช้และลด Bounce Rate เพิ่มใน .htaccess:

ErrorDocument 404 /404.html
ErrorDocument 403 /403.html

หน้า 404.html ที่ดีควรมี:

สำหรับ 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
Tip: ใช้ Google Search Console → Coverage Report เพื่อดูหน้าที่ Google ตรวจพบว่าเป็น 404 หรือถูก Block (403) เพื่อแก้ไขก่อน Google Index ลด SEO Score

แก้ปัญหาที่พบบ่อย

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 ไทยที่รองรับการตั้งค่าขั้นสูงได้ครบ