Codeigniter clean url

ยกตัวอย่างสมมติโปรเจ็ค Codeigniter ของผมอยู่ที่ /ci
โดยปกติการเข้าผ่าน url โดยทั่วไปของ Codeigniter จะเป็นดังนี้

http://localhost/ci/index.php/controller_name/function_name/parameter1/parameter2/.../parameterN

จะสังเกตุว่ามันแปลกๆตรงมี index.php มาขั้น หากต้องการเอาออกให้เราสร้างไฟล์ .htaccess ขึ้นมาโดยเนื้อไฟล์เป็นดังนี้

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /ci
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

ค่า RewriteBase จะต้องเป็น /project_name ในที่นี้ของผมคือ /ci
ค่า RewriteCond คือเงื่อนไข ในที่นี้คือ request_file(url ที่เรียก)ไม่ใช่ regular(-f) และ ไม่ใช่ directory(-d)
ค่า RewriteRule ^(.*)$ หมายถึง string ใดๆก็ได้ และต่อด้วย index.php ให้ทับ index.php ด้วย blank
ศึกษา mod_rewrite เพิ่มเติมได้ที่ http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
ให้นำไฟล์ .htaccess วางไว้ที่ root project อย่างตัวอย่างนี้ชื่อโฟลเดอร์โปรเจคคือ /ci ก็ให้วางไว้ที่ /ci/.htaccess
และให้ไปแก้ที่ไฟล์ C:\AppServ\Apache2.2\conf\httpd.conf และ search หาคำว่า rewrite คุณจะเจอบรรทัดนี้

#LoadModule rewrite_module modules/mod_rewrite.so

ให้เอาเครื่องหมาย # ออกไป เครื่องหมาย # คือ comment ครับ หมายความว่าเราได้เปิดการใช้งาน module mod_rewrite
คราวนี้เวลาเราเรียก url จะไม่ต้องใส่ index.php แล้วครับ

http://localhost/ci/controller_name/function_name/parameter1/parameter2/.../parameterN

Related posts:

This entry was posted in codeigniter. Bookmark the permalink.