VIẾT LẠI VÀ ĐỊNH TUYẾN URL
9.3. ĐỊNH TUYẾN URL 1.Tổng quan
9.3.1.Tổng quan
Định tuyến URL (URL Routing) l| kỹ thuật phân tích URL để quyết định xử lý bên trong của ứng dụng. Kỹ thuật n|y khơng có ý định chuyển đổi URL ngữ nghĩa th|nh URL phi ngữ nghĩa nhƣ viết lại URL. Thay v|o đó, mục đích của định
WebAppDevLê Đình Thanh, Nguyễn Việt Anh
185
tuyết URL l| x{c định h|nh động của ứng dụng ứng với từng URL cụ thể. Có thể kh{i qu{t hoạt động của định tuyến URL bằng diễn đạt sau:
if <URL> khớp-với <pattern1> then <action1> else if <URL> khớp-với <pattern2> then <action2> <
else <actionN>
trong đó, <URL> l| URL nhận đƣợc trong yêu cầu HTTP, <pattern1>, <pattern2>, < l| c{c mẫu hay đặc trƣng x{c định dùng để so khớp với <URL>, và <action1>,
<action2>, < l| những h|nh động sẽ đƣợc ứng dụng thực hiện nếu <URL> khớp
với <pattern1>, <pattern2>, <, tƣơng ứng.
Kh{c với viết lại URL, định tuyến URL không đƣợc thực hiện bởi mơđun mở rộng của trình phục vụ m| đƣợc thực hiện bởi chính ứng dụng. Ứng dụng sẽ cung cấp một trang đặc biệt đƣợc gọi l| bộ điều khiển mặt trước (front controller) tiếp nhận mọi yêu cầu HTTP. Bộ điều khiển mặt trƣớc giống nhƣ cửa duy nhất để vào ứng dụng. Ứng dụng cần hỗ trợ của viết lại URL để chuyển hƣớng mọi yêu cầu đến trang kh{c về bộ điều khiển mặt trƣớc. Khi nhận đƣợc yêu cầu HTTP, bộ điều khiển mặt trƣớc chuyển URL cho bộ định tuyến (router). Bộ định tuyến ph}n tích
URL để x{c định xử lý đƣợc thực hiện. Cụ thể, bộ định tuyến căn cứ v|o URL để
Hình 9.2. Định tuyến URL.
quyết định thực hiện h|nh động gì với tham số nhƣ thế n|o. Tên h|nh động v| gi{ trị tham số đƣợc bộ định tuyến gửi ngƣợc lại cho bộ điều khiển mặt trƣớc. Cuối cùng, bộ điều khiển mặt trƣớc gửi tham số đến h|nh động v| h|nh động đƣợc thực hiện để trả về đ{p ứng HTTP. Hoạt động định tuyến URL đƣợc trực quan
hóa trong Hình 9.2.
Để mọi truy cập v|o c{c trang kh{c bộ điều khiển mặt trƣớc đều đƣợc chuyển hƣớng về bộ điều khiển mặt trƣớc, c{c luật viết lại sau đ}y đƣợc sử dụng, đƣợc đặt trong tệp .htaccess tại thƣ mục gốc của ứng dụng:
1. Options +FollowSymLinks 2. IndexIgnore */* 2. IndexIgnore */* 3. RewriteEngine On 4. RewriteCond %{REQUEST_FILENAME} !-f 5. RewriteCond %{REQUEST_FILENAME} !-d 6. RewriteRule . index.php
WebAppDevLê Đình Thanh, Nguyễn Việt Anh
186