เอาละครับจากที่เคยเขียนไว้ .htaccess ไฟล์เดียวทำงานได้หมด โดยการ get segment ซึ่งเป็นวิธีการเขียนให้ทุก url วิ่งเข้าหา index ทั้งหมดแล้วเอา segment มาใช้งาน
PART 1::::เขียน .htaccess แบบ ไฟล์เดียวครอบจักรวาล by Tee++;
วันนี้เราจะมาลองเขียนตรงข้าม คือ แทนที่จะเรียกทุก url เข้าหา index เราจะใช้การเขียน .htaccess เพื่อทำการ remove index ออกแทน เพื่อจะได้ url สวยๆ ลองมาดูกันเลยครับ ไม่ยากๆ ^_^
index.php
//ตั้งค่า url ที่จะให้วิ่งหา ท่าจะแก้ต้องแก้ .htaccess ด้วย
$page_index = “index.php”;//หาค่า root folder ที่รันโปรแกรมออกมา
DEFINE(‘BASE’, preg_replace(‘#’.getenv(‘DOCUMENT_ROOT’).’#’, ”, str_replace(array(‘\\’, $page_index), array(‘/’, ”), __FILE__)));//เอาค่า root folder ไป replace กับ uri ทั้งหมดที่ get ได้
DEFINE(‘TAILER’, preg_replace(‘#’.BASE.’#’, ”, getenv(‘REQUEST_URI’)));
//แยก path กับ query string ออกมาใช้งาน
$parse_url = parse_url(TAILER);
//explode url ที่ตำแหน่ง / เพื่อกำหนด segment
$uri = explode(“/”, $parse_url[‘path’]);
//parse ค่าของ query string เพื่อให้กลับมาใช้งานได้ตามปกติ
parse_str($parse_url[‘query’]);
//ทดสอบ print segment แต่ละตำแหน่งออกมา
echo “<pre>”;
print_r($uri);
echo “<pre>”;
//ทดสอบว่า query string ใช้งานได้ตามปกติ
echo “<hr />”;
echo “<strong>Author:</strong> “.$_GET[‘author’];
?>
.htaccess
RewriteCond $1 !^(index\.php|images)
RewriteRule ^(.*)$ index.php/$1 [L]
———————————————————-
ตามตัวอย่างข้างบนถ้าผมลองเขียน url แบบนี้
http://www.localhost.com/book/…mputer/seo_friendly?author=Tee
ตำแหน่งของ segment ที่ผมจะได้ก็คือ
segment ที่ 0 = book
segment ที่ 1 = computer
segment ที่ 2 = seo_friendly
โดยที่ query string ผมก้ยังให้ค่าตามปกติคือ
$author จะให้ค่า Tee ออกมา