Để hiểu bộ định tuyến làm gì, trước tiên bạn phải hiểu công cụ viết lại là gì. Từ bài viết Wikipedia (nhấn mạnh của tôi):
Công cụ viết lại là phần mềm sửa đổi giao diện của URL web (viết lại URL). Các URL được viết lại (đôi khi được gọi là URL ngắn, ưa thích hoặc thân thiện với công cụ tìm kiếm - SEF) được sử dụng để cung cấp các liên kết ngắn hơn và có liên quan hơn đến các trang web. Kỹ thuật này thêm một mức độ phân tách giữa các tệp được sử dụng để tạo trang web và URL được trình bày cho Thế giới .
Khi sử dụng công cụ viết lại, bạn không có mối tương quan 1: 1 giữa URL và tập lệnh PHP. Một ví dụ từ cùng một bài viết:
http://example.com/wiki/index.php?title=Page_title
có thể được viết lại thành:
http://example.com/wiki/Page_title
Có nhiều lợi ích khác nhau khi sử dụng kỹ thuật. Do PHP thường được kết hợp chặt chẽ với Apache, nên công cụ viết lại được sử dụng phổ biến nhất là mod_rewrite của Apache .
Nếu bạn muốn viết lại URL, bạn cần một số loại định tuyến, vì định tuyến là quá trình lấy URL, chia nó thành các thành phần và quyết định tập lệnh thực sự cần gọi là gì. Các trang tài liệu cho các bộ định tuyến chuẩn của Zend Framework giải thích quy trình như sau:
Định tuyến là quá trình lấy điểm cuối URI (phần đó của URI đi sau URL cơ sở) và phân tách nó thành các tham số để xác định mô-đun, bộ điều khiển và hành động nào của bộ điều khiển đó sẽ nhận được yêu cầu.
Hầu hết các khung công tác PHP hiện nay đều dựa trên mẫu MVC và trên khung MVC, quy trình diễn ra như thế này * :
- Trình duyệt được trỏ đến một URL,
- Máy chủ web bắt yêu cầu và chuyển tiếp nó đến một điểm vào chung, thường là một
index.php
tập lệnh,
index.php
lấy URL và bắt đầu quá trình định tuyến.
- URL được phân tách thành các tham số, trong đó đầu tiên là bộ điều khiển, thứ hai là phương thức hành động và phần còn lại được coi là tham số động,
- Nếu một lớp trình điều khiển khớp với tham số đầu tiên tồn tại, một đối tượng điều khiển được khởi tạo,
- Phương thức hành động thường là một chức năng của đối tượng điều khiển được gọi và trả về của nó là những gì thực sự được trả về trình duyệt.
Khớp các tham số với các bộ điều khiển và phương thức thường sử dụng khớp thông qua các biểu thức thông thường để có thể xử lý các mẫu định tuyến động và phức tạp, được gọi là các tuyến. Có thể tìm thấy các ví dụ hay về các tuyến đường trên trang tài liệu Định tuyến URI của CodeIgniter :
$ tuyến ['tạp chí'] = "blog";
$ tuyến ['blog / joe'] = "blog / người dùng / 34";
$ route ['sản phẩm / (: any)'] = "catalog / sản phẩm_lookup";
$ tuyến ['sản phẩm / (: num)'] = "danh mục / sản phẩm_lookup_by_id / $ 1";
Các $route
mảng chứa các mô hình như phím và những hành động dẫn đến như giá trị trong controller/action_method/dynamic_parameter
định dạng.
* Đây không phải là một mô tả của quá trình kinh điển, chỉ là một lời giải thích đơn giản.