หลายวันมานี้ เหมือนผมผ่านอะไรมาเยอะเลย เหมือนอยู่ที่แปลกๆ มาไกล
วันนี้พอโพสสั้นๆ นะครับ แบบว่าเหนื่อยมาก~~
"เขียน .htaccess สำหรับ Modrewrite อย่างไรให้ใช้งานได้ทุกโฮส"เรื่องคราวนี้ ผมเขียนให้สำหรับคนเขียน .htaccess เป็นแล้วนะครับ
หลักการมีไม่กี่ข้อครับ ถ้าทำตามนี้ได้ จะใช้งานได้เกือบทุกโฮสเลย
(แน่ๆ อย่าง Netfirms ที่ว่ามีปัญหาบ่อย ก็ใช้งานได้ปกติ)
1. ระบุ RewriteBase ด้วยพาทแบบซัพโฟลเดอร์โดยนับจากโดเมน และปิดหัวท้ายด้วย "ยกตัวอย่าง .htaccess บนพาทเว็บ
www.example.com/myscript/
จะต้องเขียน RewriteBase เป็น
2. ระบุพาทของ url หลังกฎของ rewrite ด้วยพาทแนวเดียวกันกับข้อ 1จากตัวอย่างข้อหนึ่ง สมมุติผมจะเขียน rewrite แปลง [keyword].html เป็น page.php?kw=[keyword]
โดยทั้งหมดอยู่ใน
www.example.com/myscript/
จะเขียนได้เป็น
RewriteRule ^([^\.]+)\.html$ "/myscript/page.php?kw=$1" [L]
ถ้าทำตาม 2 ข้อนี้ ก็จะทำให้สคริปทำงานได้อย่างเต็มที่แล้วครับ

เบื้องหลังทำไมต้องเป็นแบบนี้1. ทำไมต้องระบุพาทเต็ม
เหตุมาจาก modrewrite ทำงานด้วยความสามารถของ apache
แล้วการกำหนดค่าโดเมน จะอิงกับโฟลเดอร์รากที่ใช้แสดงรากของโดเมนนั้นๆ
(นึกภาพไม่ออก ก็ไปลองแงะไฟล์ตั้งค่าของ apache ดู)
ทำให้เวลาการกำหนดพาท จึงต้องอิงจากรากโดเมนเป็นหลัก
2. ทำไมต้องมี " ปิดหัวท้าย
เหตุเพราะเพื่อรองรับในกรณีโฟลเดอร์หรือไฟล์มี ช่องว่าง
เป็นสาเหตุตกม้าตายของใครต่อหายคนมานักต่อนักแล้ว
เพื่อกันไม่ให้ระบบเข้าใจผิดว่าหลังช่องว่างคือ flag จึงต้องใส่ " ปิดหัวท้าย
