เปิด URL Rewrite ใน Joomla อย่างไร? ตั้งค่า .htaccess ให้ลิงก์ทำงาน

URL Rewrite ใน Joomla ช่วยให้ URL ไม่ต้องแสดง index.php โดยต้องตั้งค่าทั้งใน Joomla และเว็บเซิร์ฟเวอร์ให้รองรับ วิธีที่ใช้ขึ้นกับเซิร์ฟเวอร์ เช่น Apache, LiteSpeed, IIS หรือ Nginx ก่อนเริ่มควรสำรองไฟล์และตรวจสอบก่อนว่าเว็บไซต์ใช้เซิร์ฟเวอร์ชนิดใด

❶ ตรวจสอบก่อนเปิด URL Rewrite

① ตรวจชนิดเว็บเซิร์ฟเวอร์

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

② สำรองไฟล์และบันทึกค่าเดิม

สำรองไฟล์ htaccess.txt หรือ web.config.txt และจดสถานะตัวเลือก SEO เดิมใน Global Configuration ไว้ก่อน เผื่อจำเป็นต้องย้อนกลับ

③ เปิดใช้ SEF URLs ก่อน

ในหลังบ้าน Joomla ไปที่ System → Global Configuration → SEO แล้วตรวจว่า Search Engine Friendly URLs ตั้งเป็น Yes หากยังไม่ได้เปิด ให้เปิดและทดสอบหน้าเว็บก่อนดำเนินการขั้นต่อไป

❷ ตั้งค่า URL Rewrite บน Apache หรือ LiteSpeed

① เปลี่ยนชื่อไฟล์ htaccess.txt

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

② เปิด Use URL Rewriting

กลับไปที่ System → Global Configuration → SEO แล้วตั้ง Use URL Rewriting เป็น Yes จากนั้นกดบันทึก

③ ทดสอบหน้าเว็บ

เปิดหน้าแรก เมนู หมวดหมู่ และบทความ ตรวจว่า URL เปิดได้และไม่มีข้อผิดพลาด หาก Joomla ติดตั้งอยู่ในโฟลเดอร์ย่อยหรือมีการปรับแต่ง .htaccess อยู่แล้ว การตั้งค่าอาจต้องเหมาะกับตำแหน่งติดตั้งและโฮสติ้งนั้น

❸ ตั้งค่าบน IIS หรือ Nginx

① IIS

สำหรับ IIS ต้องมีโมดูล URL Rewrite และไฟล์กฎที่ถูกต้อง โดยทั่วไป Joomla ใช้ไฟล์ web.config.txt ซึ่งอาจต้องเปลี่ยนชื่อเป็น web.config ตามการตั้งค่าของเซิร์ฟเวอร์ ตรวจให้แน่ใจว่าโฮสติ้งรองรับก่อนเปิด Use URL Rewriting

② Nginx

Nginx ไม่อ่านไฟล์ .htaccess การทำ URL Rewrite จึงต้องตั้งกฎที่ฝั่งเซิร์ฟเวอร์ แล้วจึงเปิด Use URL Rewriting ใน Joomla เมื่อกฎพร้อม หากไม่มีสิทธิ์แก้การตั้งค่า Nginx ให้ขอให้ผู้ให้บริการโฮสติ้งดำเนินการ

③ LiteSpeed และโฮสติ้งที่จัดการให้

LiteSpeed รองรับการใช้กฎจาก .htaccess ได้ในหลายรูปแบบ แต่การตั้งค่าของแต่ละโฮสติ้งอาจไม่เหมือนกัน หากเปลี่ยนชื่อไฟล์แล้ว URL ยังมีปัญหา ให้สอบถามผู้ให้บริการว่าเปิดการอ่าน .htaccess และ rewrite rules ไว้หรือไม่

ComSiam แนะนำให้ยืนยันชนิดเซิร์ฟเวอร์และการรองรับ rewrite rules กับโฮสติ้งก่อนแก้ไฟล์บนเว็บไซต์ที่ใช้งานจริง

❹ ตรวจสอบและแก้ปัญหาหลังเปิด

① ตรวจว่า index.php หายจาก URL

หลังเปิดตัวเลือกครบ URL ที่เคยมี index.php ควรถูกเรียกผ่านรูปแบบที่ไม่มีส่วนดังกล่าว ทดลองเปิดหน้าเว็บไซต์จากเมนูและลิงก์ภายใน ไม่ใช่ตรวจแค่หน้าแรก

② หากพบหน้า 404 หรือ Internal Server Error

ปิด Use URL Rewriting ชั่วคราว แล้วตรวจว่าไฟล์กฎถูกเปลี่ยนชื่อถูกต้องและเซิร์ฟเวอร์รองรับ rewrite rules หากเว็บไซต์กลับมาใช้งานได้ แสดงว่าควรตรวจการตั้งค่าฝั่งเซิร์ฟเวอร์ก่อนเปิดอีกครั้ง

③ หากเปิดเว็บไซต์ไม่ได้

ใช้ไฟล์สำรองคืนชื่อหรือค่าก่อนหน้า และติดต่อผู้ให้บริการโฮสติ้งพร้อมแจ้งชนิดเซิร์ฟเวอร์และข้อความผิดพลาด อย่าลบกฎเดิมใน .htaccess หรือ web.config โดยไม่ทราบว่ากฎนั้นใช้กับอะไร

④ ทดสอบลิงก์สำคัญให้ครบ

ตรวจหน้าแรก หน้าหมวดหมู่ บทความ แบบฟอร์มค้นหา และหน้าเข้าสู่ระบบ ถ้าเว็บไซต์มีส่วนเสริมหรือระบบสมาชิก ให้ลองเส้นทางที่ผู้ใช้ใช้งานจริงด้วย

❺ เช็กลิสต์ก่อนจบการตั้งค่า

  • สำรองไฟล์กฎเดิมแล้ว
  • ยืนยันชนิดเว็บเซิร์ฟเวอร์แล้ว
  • เปิด Search Engine Friendly URLs
  • เปลี่ยนชื่อไฟล์หรือเพิ่มกฎให้ตรงกับเซิร์ฟเวอร์
  • เปิด Use URL Rewriting หลังเซิร์ฟเวอร์พร้อม
  • ทดสอบหน้าเว็บหลายประเภทและตรวจว่าไม่มี 404
  • เตรียมวิธีย้อนกลับหากเกิดข้อผิดพลาด

เมื่อ Joomla และเว็บเซิร์ฟเวอร์ตั้งค่า URL Rewrite สอดคล้องกัน URL จะเรียกหน้าเว็บได้โดยไม่ต้องแสดง index.php และเว็บไซต์ยังเปิดใช้งานได้ตามปกติ