Joomla Error 404 ทั้งที่หน้าเว็บยังมีอยู่ แก้อย่างไร?

Joomla Error 404 หมายถึงระบบหาเนื้อหาตาม URL ที่เปิดไม่พบ แม้บทความจะยังอยู่ในระบบก็ตาม สาเหตุอาจมาจาก URL หรือ Alias เปลี่ยน รายการเมนูไม่ตรงกับบทความ การตั้งค่า SEF หรือกฎ URL Rewrite ของเซิร์ฟเวอร์

ให้ตรวจ URL และสถานะบทความก่อน แล้วค่อยตรวจเมนูและการตั้งค่า SEF ทีละจุด

❶ ตรวจ URL และสถานะบทความ

① เปิดบทความจากรายการในแอดมิน แล้วตรวจว่าบทความยังเผยแพร่ อยู่ในหมวดหมู่ที่เผยแพร่ และไม่ได้ตั้งระดับการเข้าถึงที่จำกัดผู้เข้าชม

② เปรียบเทียบ URL ที่เกิด 404 กับ Alias ปัจจุบันของบทความและหมวดหมู่ หากเพิ่งเปลี่ยนชื่อหรือ Alias ลิงก์เดิมอาจไม่ตรงกับเส้นทางปัจจุบัน

③ ลองเปิดบทความจากเมนูหรือรายการบทความบนเว็บไซต์ แทนการพิมพ์ URL เดิม หากเปิดได้ แสดงว่าเนื้อหายังอยู่ แต่ลิงก์เดิมหรือเส้นทาง URL อาจล้าสมัย

❷ ตรวจรายการเมนูที่เชื่อมกับบทความ

Joomla ใช้รายการเมนูเป็นส่วนหนึ่งของเส้นทาง URL แบบ SEF หากบทความมีอยู่แต่เปิดผ่าน URL ที่เคยใช้ไม่ได้ ให้ตรวจรายการเมนูที่ควรพาไปยังบทความนั้น

① เข้าแอดมินแล้วเปิดเมนูที่เกี่ยวข้อง

② ตรวจว่ารายการเมนูยังเผยแพร่ และชี้ไปยังบทความหรือหมวดหมู่ที่ถูกต้อง

③ ตรวจสถานะของรายการเมนูและหมวดหมู่ รวมถึงระดับการเข้าถึง หากตั้งเป็น Registered ผู้เข้าชมที่ยังไม่ล็อกอินอาจเปิดไม่ได้

④ หากมีรายการเมนูซ้ำหรือ Alias ซ้ำ ให้ตรวจว่า URL เชื่อมกับรายการที่ต้องการจริง

อย่าลบเมนูหรือสร้าง Alias ใหม่ทันที หาก URL เดิมมีผู้ใช้หรือเครื่องมือค้นหาอ้างอิงอยู่ ควรตรวจและวางแผนเปลี่ยนเส้นทางให้เหมาะสมก่อน

❸ ตรวจการตั้งค่า SEF และ URL Rewrite

หาก 404 เริ่มเกิดหลังเปิดหรือเปลี่ยนการตั้งค่า SEF ให้เข้า System → Global Configuration → SEO แล้วตรวจว่า Search Engine Friendly URLs และ Use URL Rewriting ตั้งค่าตรงกับความสามารถของเซิร์ฟเวอร์หรือไม่

การใช้ URL Rewriting ต้องอาศัยการตั้งค่าที่รองรับจากเว็บเซิร์ฟเวอร์ เช่น mod_rewrite บน Apache หากเปิดตัวเลือกนี้แต่เซิร์ฟเวอร์ไม่ได้ตั้งค่าให้รองรับ URL อาจเปิดไม่ได้

ก่อนแก้ไฟล์ .htaccess ให้สำรองไฟล์เดิมไว้ และตรวจว่าชื่อไฟล์ htaccess.txt ถูกเปลี่ยนเป็น .htaccess แล้วหรือยัง เฉพาะเว็บไซต์ที่ใช้ Apache เท่านั้น หากใช้ Nginx หรือเซิร์ฟเวอร์ชนิดอื่น ต้องใช้กฎ Rewrite ที่เหมาะกับระบบนั้น อย่านำกฎของ Apache ไปใช้โดยตรง

❹ ทดสอบโดยปิด URL Rewrite ชั่วคราว

หากปัญหาเกิดกับหลายหน้าหลังเปิด URL Rewrite ให้ผู้ดูแลปิดตัวเลือก Use URL Rewriting ชั่วคราวจาก Global Configuration แล้วทดสอบลิงก์อีกครั้ง

  • หาก URL กลับมาเปิดได้ ให้ตรวจการตั้งค่า Rewrite ของเว็บเซิร์ฟเวอร์และ .htaccess
  • หากยังเป็น 404 ให้ตรวจรายการเมนู บทความ Alias และสถานะการเผยแพร่
  • เมื่อทดสอบเสร็จ ให้คืนการตั้งค่าที่ต้องการ และตรวจหน้าเว็บอีกครั้ง

การเปลี่ยนตัวเลือกนี้อาจทำให้รูปแบบ URL เปลี่ยน จึงควรทดสอบหน้าเว็บสำคัญและคืนค่าหลังตรวจหาสาเหตุ

❺ ตรวจแคชและส่วนเสริมที่จัดการ URL

หากแก้ Alias เมนู หรือกฎ Rewrite ไปแล้วแต่ยังเห็นผลเดิม ให้ล้างแคช Joomla และแคชจาก CDN หรือปลั๊กอินแคชที่ใช้งาน จากนั้นเปิด URL ในหน้าต่างไม่ระบุตัวตน

หากมีส่วนเสริมที่จัดการ URL, Redirect หรือ SEF ให้ตรวจว่ามีการตั้งกฎที่ชี้ URL ไปยังหน้าอื่นหรือไม่ และลองปิดเฉพาะส่วนเสริมที่เพิ่งเปลี่ยนหลังสำรองข้อมูลแล้ว หากไม่แน่ใจ ให้ตรวจ Error Log หรือปรึกษาผู้ให้บริการโฮสติ้ง

❻ ตั้ง Redirect เมื่อ URL เดิมถูกเปลี่ยน

หากยืนยันแล้วว่า Alias หรือ URL เปลี่ยนและลิงก์เดิมยังมีผู้ใช้งาน ให้ตั้ง Redirect จาก URL เดิมไปยัง URL ปัจจุบัน เพื่อไม่ให้ผู้เข้าชมพบหน้า 404 ซ้ำ

ก่อนตั้ง Redirect ให้ตรวจปลายทางและหลีกเลี่ยงการสร้างกฎวนกลับไปมาระหว่าง URL หากต้องดูแลเว็บไซต์ร่วมกับทีม เช่น ComSiam ควรบันทึก URL เดิม URL ใหม่ และวันที่แก้ไขไว้ เพื่อตรวจสอบภายหลังได้ง่าย

สรุป

เมื่อ Joomla Error 404 ทั้งที่บทความยังอยู่ ให้ตรวจสถานะและ Alias ของบทความก่อน จากนั้นตรวจรายการเมนู ระดับการเข้าถึง และการตั้งค่า SEF หากปัญหาเกิดหลังเปิด URL Rewrite ให้ตรวจ .htaccess หรือกฎของเว็บเซิร์ฟเวอร์ให้ตรงกับระบบที่ใช้งาน และตั้ง Redirect เมื่อ URL เดิมถูกเปลี่ยน