ซึ่งปกติแล้วเว็บที่เราใช้ก็เป็น framework ตัวหนึ่งที่โมฯ ขึ้นมาใช้เอง
และแน่นอนว่า framework ส่วนใหญ่มักจะมีการจัดการ url-decoration เพื่อความสวยงามให้
ตัวอย่างเช่น CI หรือ CodeIgniter ก็จะสั่งให้ทุกอย่าง redirect ไปหา index.php แล้วทำการเซ็ตไฟล์ .htaccess ให้ re-write เจ้า index.php ออกไปจาก url เช่น
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
หรือถ้าเป็น Laravel ก็จะเป็น
Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L]
ทีนี้เวลาเราเรียก จาก
www.nainee.com/index.php/view/1234
ก็จะเหลือแค่
www.nainee.com/view/1234
เท่านั้น ดูสวยขึ้นเยอะ!
นับเป็นวิธีการทำให้ url ดูสวยงามเรียกง่ายขึ้นที่นิยมที่สุด
แต่ทว่า...
อย่างที่เกริ่นไปข้างต้น เรากำลังทำการย้าย host อยู่ แน่นอนว่าเมื่อย้ายไปแล้วก็ต้องมานั่งปรับๆ อะไรกันนิดหน่อยตามฟอร์มเพราะเซิร์ฟเวอร์แต่ละตัวมันตั้งค่ามาไม่เหมือนกัน
แต่ผิดที่โค้ดภาษา PHP ยังพอว่าแต่นี่แม้แต่เรียกหน้าเพจยังไม่ขึ้นเลย แจ้งมาแต่คำว่าNo input file specified.อ้าว เจออย่างนี้เราก็งงน่ะสิ ของเก่าไอ้เจ้า .htaccess มันยังทำงานได้ปกติเลย แล้วนี่มันเกิดอะไรขึ้น?
คือบอกก่อนว่า .htaccess ที่เขียนน่ะมันไม่ผิดชัวร์ เพราะที่ host เก่ามันทำการ re-write ได้ไม่เห็นมีปัญหา
แล้วแก้ยังไงล่ะ?
ทางแก้นั้นไม่ยากเลย แต่ใช้เวลาหานานมาก นั่นคือ...เพิ่ม ? ลงไปข้างหลัง path ที่เราจะให้ re-write ไปหา
เช่น
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php?/$1 [L]
เพียงเท่านั้นแหละ .htaccess ก็จะกลับมาใช้งานได้เหมือนเดิมจบ!
ไม่มีความคิดเห็น:
แสดงความคิดเห็น