ถ้าสังเกตกันดีๆ ตอนนี้ URL ของหน้าต่างๆ ใน GotoKnow.org จะไม่มี cgi-bin/me อยู่แล้วครับ URL ใหม่นี้นอกจากจะสั้นลงแล้ว ยังจะสื่อความหมายมากขึ้นอีกด้วย

แล้ว cgi-bin/me ไปไหนล่ะ? ไม่ได้ไปไหนครับ แต่มัน “ซ่อน” อยู่ การ “ซ่อน” URL อย่างนี้นั้นทำได้ด้วยความสามารถของ module ของ Apache ที่ชื่อว่า mod_rewrite (คลิกที่ลิงก์แล้วจะเจอคู่มือการใช้งาน) โดยการทำงานของ mod_rewrite นั้น สรุปโดยย่อคือจะใช้วิธีการแบบ regular expression ในการแทนค่า URL ที่ web browser ส่งมาเพื่อไปหา URL ที่แท้จริงใน web server ครับ

mod_rewrite เป็น module ที่มีศักยภาพในการทำงานสูงมาก ซึ่งศักยภาพสูงๆ ก็ย่อมตามมาด้วยความซับซ้อนในการใช้งานเป็นธรรมดา แต่ก็ไม่ยากเกินไปที่จะเรียนรู้ครับ มี website มากมายที่แนะนำวิธีการใช้ module นี้ ดังนั้นผมจะไม่เขียนในรายละเอียดในที่นี้ แต่ผมขอแนะนำส่วนสำคัญที่จะทำให้การเขียน rules สำหรับ mod_rewrite ให้ง่ายขึ้น ก็คือการให้ mod_rewrite แสดง log ด้วย เมื่อมีการ rewrite เพื่อเราจะได้ “debug” rules นั่นเอง

การ turn on debugging ทำได้โดยการใส่ directive ต่อไปนี้ใน httpd.conf ครับ

RewriteLog /tmp/rewrite.log
RewriteLogLevel 9

สำหรับ RewriteLogLevel ผมชอบเบอร์ 9 ครับ ข้อมูลเยอะดี แต่เวลาใช้ระบบจริง ต้อง turn off เสียนะครับ มิฉะนั้น hard disk คุณจะเต็มอย่างรวดเร็วเพราะข้อมูลมันเยอะเหลือเกินในการ rewrite แต่ละครั้ง

URL ของ GotoKnow.org หล่อแล้วครับ แต่อย่างไรก็ตาม สำหรับ MemeExpress (ซึ่งเป็นระบบที่เราใช้สำหรับ GotoKnow.org) เราออกแบบให้ไม่จำเป็นที่จะต้องใช้ mod_rewrite เพราะเราอยากให้ MemeExpress เป็นระบบที่ติดตั้งใช้งานได้ง่ายที่สุดครับ

GotoKnow.org จะเป็นอย่างไร MemeExpress จะติดตั้งใช้งานได้ง่ายที่สุดจริงหรือไม่ โปรดติดตามต่อไปครับ