โห โค้ดนี้พี่ตี๋เค้าคงไม่ใช้แล้วมั้งคับ กี่ปีแล้วเนี่ย คงไปเปลี่ยนไปใช้ CodeIgniter แทนแล้ว
ลองใช้โค้ดนี้ดูแทนละกันคับ
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
<?php
$segment = isset($_SERVER['PATH_INFO']) ? explode('/',preg_replace('~^/?(.*?)/?$~','$1',$_SERVER['PATH_INFO'])) : array() ;
print_r($segment);
print_r($_GET);
ลองเข้าด้วย
domain.com/class/method/param1/param2?author=Tee
domain.com/class/method/param1/param2/?author=Tee
domain.com/class/method/param1/param2///////////?author=Tee
มันน่าจะออกมาเป็นแบบนี้
Array
(
[0] => class
[1] => method
[2] => param1
[3] => param2
)
Array
(
[author] => Tee
)
แบบนี้จะสามารถใช้งานในกรณีที่เราเขียนโปรแกรมไว้ใน Subfolder ได้ด้วย ไฟล์ต่างๆที่มีอยู่จริงบนก็จะไม่ถูก rewrite ไปด้วย สามารถมองเห็นได้ปกติ แต่ถ้าไม่ปกติแสดงว่าเป็นที่โฮสท์ ซวยไป ต้องเขียน RewriteCond ดักเพิ่มเป็น case ไป
ปล. ถ้า Query String ไม่สามารถใช้งานได้ ที่ .htaccess ลองเปลี่ยน [L] เป็น [L,QSA]
คาราวะอาจารย์ตี๋หนึ่งจอก +1
ขอวิธีการนำไปใช้งานหน่อยนะครับ พอดีจะำทำแบบเป็นภาษาำไทย สมมติว่าผมจะทำให้เป็น domain.com/ชื่อสมาชิก/ข้อมูลสมาชิก
แล้วผมต้อง Get ค่าเอาไปใช้ยังไงครับ โดยสมมติว่าชื่อสมาชิกมีช่องว่างแบบนี้ครับ test system
1. ทำให้ test system เป็น test-system อย่างไรครรับ
2. หลังจากทำแล้ว จะได้ว่า domain.com/test-system/ข้อมูลสมาชิก เวลาเรา Get ค่า Array[0] จะได้ test-system มา แล้วเอาไป Query ในฐานข้อมูล แต่ใรฐานข้อมูลมันเป็น test system แล้วเราจะทำไงกับมันครับ คำตอบอาจจะเป็นประมาณว่าแปลงกลับไปเป็นช่องว่าง แล้วถามต่อครับว่าื ในกรณีที่เป็น test? system test เวลาแปลงให้ใส่เครื่องหมายต่าง ๆ เป็น - ให้หมด จะได้ test--system-test แล้วเราจะแปลงกลับถูกได้ไงครับ ก่อนที่จะเอาไปเชคกับฐานข้อมูล
3. ขอบคุณมากครับผม