CodeIgnitor: URL
Trong phần này chúng ta sẽ tìm hiểu về cách CI xử lý URL để gọi các controller, method.
Mặc định, URL của CI được thiết kế thân thiện với các máy tìm kiếm, tối ưu SEO bằng cách sử dụng các phân khúc (gọi là segment) thay vì sử dụng URL kiểu truyền thống (query string)
Bạn có thể xem một ví dụ về cách mà CI thiết kế URL:
example.com/news/article/my_article
Tuy nhiên, kiểu URL truyền thống (query string) các bạn cũng có thể sử dụng bằng cách cấu hình trong file application/config/config.php như sau:
$config['enable_query_strings'] = TRUE;
Bây giờ ta sẽ phân tích URL sau:
example.com/index.php/class/function/ID
Với URL trên, ta có ba segment là class, function và ID. Trong đó:
- Segment class sẽ được CI gọi tới controller tên class (class cũng chính là một lớp).
- Segment function được CI gọi tới phương thức tên function của lớp class ở trên.
- Segment ID được CI hiểu như là 1 biến của phương thức function (Bạn cũng có thể truyền vào nhiều biến).
Để làm việc với các segment của URL, CI đã xây dựng sẳn các helper giúp bạn làm việc với các URI segment 1 cách dễ dàng, vì vậy bạn yên tâm về cách thiết kế URL này của CI.
Loại bỏ index.php
Với URL trên, chúng ta thấy sự xuất hiện của index.php, bạn cũng có thể bỏ index.php bằng cách sử dụng .htaccess (chỉ hoạt động trên server Linux). Code .htaccess để loại bỏ index.php như sau:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
Như vậy, sau khi sử dụng .htaccess ta sẽ có URL thân thiện sau:
example.com/class/function/ID
Thêm phần mở rộng cho URL
Bạn thường thấy một số website có đường URL như sau:
codeigniter.com/user_guide/general/urls.html (Phần đuôi .html).
CI cũng có thể làm được như vậy chỉ với 1 cấu hình đơn giản trong file application/config/config.php:
$config['url_suffix'] = '.html';
lúc đó URL của chúng ta sẽ là:
example.com/class/function/ID.html
Kích hoạt query string
Trong trường hợp bạn muốn sử dụng kiểu URL truyền thống (query string), bạn có thể tiến hành cấu hình kích hoạt trong file application/config/config.php:
$config['enable_query_strings'] = TRUE;
$config['controller_trigger'] = 'c'; //Biến lấy tên controller
$config['function_trigger'] = 'm'; //Biến lấy tên phương thức
Lúc đó, URL của chúng ta sẽ trở thành:
example.com/index.php?c=class&m=function&id=ID