Thứ Ba, 14 tháng 4, 2009

Kỹ thuật định dạng lại URL (URL Rewrite)

From: http://www.phpvn.org/index.php?topic=293.0;wap2

Đối với Server Apache: để thực hiện được URL Rewriting bạn làm các bước sau:



1. Kích hoạt mod mod_rewrite có sẵn trong Apache bẳng cách sửa trong file httpd.conf, bạn Find đến dòng chưa rewrite_module rồi bỏ dấu # (nếu có) ở đầu đi. Sau đó restart Apache. Nếu bạn dùng các host trên internet thì có thể đã có sẵn rồi.

2. Tạo 1 file .htacces có nội dung như sau:
Đầu tiên bật Rewrite Engine:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /

Tiếp đến là viết cú pháp RewriteRule:
RewriteRule ^Virtual_Path Real_Path

Ví dụ:
RewriteRule ^topic_([0-9]*).html index.php?topic=$1
ví dụ: topic_1.html thành index.php?topic=1

RewriteRule ^article/([0-9]*)/page/([0-9]*) index.php?article=$1&page=$2
ví dụ: article/1/page/2 thành index.php?article=1&page=2

Cú pháp để viết các Rule này giống như cách viết của biểu thức chính quy Regular Expression. ví dụ như sau:

(.*) nhận tất cả các giá trị.
([0-9]*) chỉ nhận các giá trị là số, từ 0-9.
([a-zA-Z]*) chỉ nhận các giá trị là chữ cái, từ a-z và A-Z.

3. Sau khi tạo được file htaccess bạn copy nó vào thư mục gốc của web của bạn là có thể chạy được.

Đối với Server IIS: các bạn download gói cần thiết về để có thể thực hiện được việc rewrite, các bạn có thể download từ 1 số trang sau:

http://www.micronovae.com/ModRewrite/ModRewrite.html
http://www.qwerksoft.com/products/iisrewrite/
http://www.isapirewrite.com/
http://www.motobit.com/help/url-replacer-rewriter/iis-mod-rewrite.asp

Ngoài việc sử dụng mod url_rewrite như trên thì nếu host của bạn ko có kích hoạt mod này hoặc bạn ko có quyền để cấu hình nó như trên. Để đơn giản các bạn có thể tạo ra những cách khác nhau để làm cho URL trở nên đẹp và thân thiện hơn. Dưới đây là 1 số cách khác nhau.
c1 dạng như sau: http://vidu.com/index.php/news/2007/13/01 <<>
c2 dạng như sau: http://vidu.com/index.php/news_2007_13_01.html <<>
c3 có thể viết như sau: http://vidu.com/index.php?q=news/2007/13/01 <<>
Và có thể có nhiều cách khác nhau các bạn có thể tự nghĩ ra. Hoặc có thể dùng cách mã hoá xâu truy vấn chẳng hạn.

Tài liệu tham khảo:
http://en.wikipedia.org/wiki/Rewrite_engine
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html

Không có nhận xét nào:

Đăng nhận xét