http://codeigniter.com/wiki/mod_rewrite/
โดย
ปรับแก้ Apache2.2/conf/httpd.conf
แก้ประมาณบรรทัดที่ 196
(ดูได้ดังนี้ )
C:\AppServ\Apache2.2\conf>type httpd.conf | findstr /i /n rewrite
196:LoadModule rewrite_module modules/mod_rewrite.so
โดยเอา # หน้าบรรทัดออก ถ้ามี# อยู่
ต้องสร้าง .htaccess ไว้ที่ path บนสุดของ CodeIgniter ( ถ้า unzip มาใหม่ๆจะเห็น folder ที่ยังไม่มี .htaccss )
RewriteBase / จะเป็น Path ของเราเองเช่น
RewriteBase /CodeIgniter_2.0.1/
แล้ว แก้ไข / config.php ไฟล์
28 $config['index_page'] = '';
48 $config['uri_protocol'] = 'QUERY_STRING' ;
160 $config['enable_query_strings'] = TRUE;
เมื่อติดตั้งแล้ว restart apache2.2 ใหม่
แล้วลองรันดูจะเห็นว่าไม่ต้องมี index.php แล้ว
แต่ว่า $_GET จะได้เป็น
Array ( [/auth/check] => )
ซึ่งจะพบว่า ไม่สามารถใช้งาน $_GET ได้
(ซึ่งก่อนหน้าติดตั้ง mod_rewrite และใช้ .htaccess จะยังสามารถใช้ $_GET ได้ปกติ
แต่ url จะเป็น
-------------------------------------------------------------------------------------
หากต้องการ $_GET ใน Controller ให้ สร้าง $_GET โดย Parse QueryString ดังนี้
จาก link จะเห็นว่ามีเขียนว่า 100%
นั่นคือใช้
parse_str(substr(strrchr($_SERVER['REQUEST_URI'], "?"), 1), $_GET);
ตัวอย่างเช่น ใน Controller auth
public function check()
{
print_r($_GET);
echo "
";
";
print_r($_SERVER['REQUEST_URI']);
parse_str($_SERVER['REQUEST_URI'], $_GET);
echo "
";
";
print_r($_GET);
parse_str(substr(strrchr($_SERVER['REQUEST_URI'], "?"), 1), $_GET);
echo "
";
";
print_r($_GET);
}
จะได้ผล ดังนี้
Array ( [/auth/check] => )
/codeIgniter_2.0.1/auth/check?user=bb&pass=vc
Array ( [/codeIgniter_2_0_1/auth/check?user] => bb [pass] => vc )
Array ( [user] => bb [pass] => vc )
/codeIgniter_2.0.1/auth/check?user=bb&pass=vc
Array ( [/codeIgniter_2_0_1/auth/check?user] => bb [pass] => vc )
Array ( [user] => bb [pass] => vc )
=================================================================
NOTE:
HTML Form ที่เรียกใช้ URL จะเป็นดังนี้
กรณี ไม่ได้ใช้ mod_rewrite
กรณีมีการติดตั้ง mod_rewrite และ แก้ไข config.php แล้ว
No comments:
Post a Comment