Thứ Năm, 29 tháng 9, 2016

PHP nâng cao - Viết lại đường dẫn url thân thiện

Rewrite url sử dụng htaccess hay còn gọi là đường dẫn thân thiện trong PHP là một kỹ thuật sử dụng mod url rewrite của máy chủApache để viết lại đường dẫn của trang website cho nó gọn và đẹp, việc viết lại đường dẫn như vậy có tác dụng thân thiện với người dùng, đường dẫn thân thiện giúp người dùng dễ hiều và dễ nhớ hơn đồng thời nó cũng có tác dụng vô cùng lớn với các bộ máy tìm kiếm như Goole, Bing...

Việc đưa các từ khóa vào đường dẫn của trang web có tác dụng SEO rất tốt
Ở phần viết lại đường dẫn Url cho website này chúng ta sẽ bắt gặp những chuỗi, biểu thức Regular Expression. Nếu bạn chưa biết nhiều về nó thì hãy đọc tại đây trước nhé.

1. Ví dụ chúng ta xét một ví dụ sau 

a. Chúng ta có một đường dẫn khi chưa viết lại

Ví dụ ta có đường dẫn trang quản lý thành viên như sau

Url trên là url cơ bản của một trang web viết bằng ngôn ngữ PHP, việc đưa lên url 2 biến page=users và action=list là ý đồ của người lập trình. Tuy nhiên với url như vậy khiến cho người dùng khó nhớ khi muốn vào xem bài viết, và hơn nữa là không tối ưu SEO trong các bộ máy tìm kiếm google, bing, yahoo.

Việc đưa url thân thiện cho người dùng dễ nhớ và tối ưu hóa công cụ tìm kiếm của các trang web bây giờ là tất yếu. Các bạn sẽ thấy sao khi đường dẫn được đổi lại là
Thật là đẹp, dễ nhớ và chuẩn SEO đúng không nào? để có được url như vậy ta cần sử dụng file .htaccess

b. Sử dụng file .htaccess

File .htaccess là gì, đơn giản nó chỉ là một file cấu hình máy chủ apache trên server chứa website của bạn, các bạn có thể dùng editor bất kỳ tạo ra một file có đuôi mở rộng là .htaccess, file này không có tên các bạn nhé. Sau đó lưu vào thư mục root của website ( root là folder web của bạn, file .htaccess ngang hàng với index.php )

Rewrite url htaccess

Để sử dụng được tính năng rewrite url này các bạn nhớ bật mod rewrite lên nhé.

- File .htaccess, để bắt đầu rewrite, dòng lệnh đầu tiên trong file .htaccess
1
RewriteEngine On

Dòng lệnh RewriteEngine On cho apache biết ta đang bắt đầu rewrite url, sau khi đã khai báo RewriteEngine On thì chúng ta có thể bắt đầu quy ước các url theo ý của mình.

Khi các bạn rewrite lại url thì lúc này bạn sẽ có 2 url là url cũ và url mới, cái mà bạn mới viết lại đường dẫn là url ảo và url cũ là url thật. Khi nhập vào trình duyệt url ảo thì tự động apache sẽ đọc file .htaccess và so sánh với url thực sau đó sẽ chuyển đến trang đích.

- Quy ước các url 

Để bắt đầu rewrite url mới trong htaccess ta sử dụng hàm RewriteRule
1
RewriteRule [url_ảo] [url_thực]

Ví dụ 
1
2
3
RewriteRule ^thanh-vien.html$ list-user.php
 
#Url list-user.php được chuyển sang thanh-vien.html

- Ví dụ bạn có url là 

http://yourdomain.com/?page=product&act=list

Bạn có muốn chuyển thành

http://yourdomain.com/san-pham.html

Trong file .htaccess bạn chỉ cần viết như sau
1
2
3
RewriteRule ^san-pham.html$ index.php?page=$1&act=$2
 
#Trong đó thì $1 ~ page và $2 ~ act

- Ví dụ bạn có url trang chi tiết sản phẩm như sau

http://yourdomain.com/?page=product&act=detail&id=10

Bạn có muốn chuyển thành

http://yourdomain.com/san-pham/ten-san-pham-10.html

Để làm được điều này thì bạn cần phải lấy được tên sản phẩm ví dụ như là "dien-thoai-iphone-5s" băng cách sử dụng các hàm str_replace nhé. Trong htaccess bạn sẽ quy định lại url
1
RewriteRule ^san-pham/([a-zA-Z-_]+)-([0-9]+).html$ index.php?page=$1&act=$2&id=$3
nguồn http://phpandmysql.net/


EmoticonEmoticon