Mặc định, URLs trong CodeIgniter được thiết kế thân
thiện với các bộ máy tìm kiếm và người dùng, thay vì dạng “truy vấn” mặc định
của hệ thống tự sinh ra, CodeIgniter dùng liên kết dạng “phân đoạn”
example.com/news/article/my_article
Chú ý:
URLs dạng truy vấn vẫn có tùy chọn để kích hoạt lại (xem trong phần sau) .
URLs dạng truy vấn vẫn có tùy chọn để kích hoạt lại (xem trong phần sau) .
Phân đoạn trong URI
Các phân đoạn trong URL, theo mô hình
Model-View-Controller, thường có dạng như vầy:
example.com/lớp/hàm/ID
- Đoạn đầu tiên là tên lớp controller cần gọi.
- Đoạn thứ 02 là tên hàm, hay phương thức cần gọi.
- Đoạn thứ 03, và các đoạn bổ sung khác thể hiện ID hay tham số sẽ được truyền vào controller.
URI
Library và URL Helper chứa các hàm giúp việc thao tác với dữ liệu URI dễ
dàng hơn. Hơn nữa, Các URLs của bạn có thể thay đổi địa chỉ trỏ đến bằng cách
dùng tính năng URI
Routing trong các
trường hợp phức tạp hơn.
Xóa đường dẫn đến index.php
Mặc định, tập tin index.php sẽ luôn được
đính kèm vào URLs:
example.com/index.php/news/article/my_article
Nếu máy chủ Apache của bạn có bật mod_rewrite , bạn có thể dễ dàng xóa tập tin này bằng cách sửa tập tin .htaccess với 01 vài thiết lập qui tắc đơn giản. Sau đây là 01 ví dụ dùng phương thức “negative” đổi hướng tất cả mọi yêu cầu ngoại trừ các mục riêng biệt:
example.com/index.php/news/article/my_article
Nếu máy chủ Apache của bạn có bật mod_rewrite , bạn có thể dễ dàng xóa tập tin này bằng cách sửa tập tin .htaccess với 01 vài thiết lập qui tắc đơn giản. Sau đây là 01 ví dụ dùng phương thức “negative” đổi hướng tất cả mọi yêu cầu ngoại trừ các mục riêng biệt:
RewriteEngine
On
RewriteCond
%{REQUEST_FILENAME} !-f
RewriteCond
%{REQUEST_FILENAME} !-d
RewriteRule
^(.*)$ index.php/$1 [L]
Trong ví dụ trên, bất kỳ yêu cầu HTTP nào đến các
thư mục hay các tập tin đều được xem như là 01 yêu cầu đến tập tin index.php
Ghi chú:
- Các qui tắc này có thể sẽ không hoạt động trên tất cả cấu hình các máy chủ.
- Đảm bảo rằng bạn phải loại trừ các trường hợp cần quyền truy cập đến bất kỳ tài nguyên nào từ bên ngoài máy chủ web.
Trong tập tin config/config.php bạn có thể
xác định phần bổ sung sẽ được thêm vào tất cả URLs xử lý bởi CodeIgniter. Ví dụ,
nếu 01 URL như vầy:
example.com/index.php/products/view/shoes
example.com/index.php/products/view/shoes
Ta có thể thêm phần bổ sung ví dụ như .html ->
tạo cảm giác như là liên kết tới 01 trang html nào đó:
example.com/index.php/products/view/shoes.html
Kích hoạt liên kết dạng truy vấn
Trong 01 vài trường hợp bạn sẽ cần dùng cấu trúc
dạng chuỗi truy vấn trong các URLs:
index.php?c=products&m=view&id=345
CodeIgniter có 01 tùy chọn cho việc này, ta sẽ vào
đây để sửa application/config.php. Nếu bạn mở tập tin cấu hình của bạn bạn
sẽ thấy các mục này:
$config['enable_query_strings']
= FALSE;
$config['controller_trigger']
= 'c';
$config['function_trigger']
= 'm';
Ta chỉ cần đổi “enable_query_strings” thành TRUE ,
tính năng này sẽ được kích hoạt. Các controllers và các hàm của bạn sau đó sẽ
được gọi bằng cách truyền tham số vào các từ khóa “trigger”
index.php?c=controller&m=method
Ghi chú:
Nếu bạn đang dùng dạng liên kết là câu truy vấn bạn phải tự
thiết lập các URLs, thay vì dùng các hàm xử lý URL helpers (và các hàm khác
liên quan URLs, ví dụ như các hàm xử lý biểu mẫu) do chúng được thiết kế để
hoạt động hiệu quả với các URLs dạng phân đoạn.
Nếu vẫn chưa rõ các bạn xem thêm video clip sau:
By #drM
Nguồn: User Guide – General Topics
Không có nhận xét nào:
Đăng nhận xét