Tạo địa chỉ web đẹp với modRewrite trong Apache

- Bài viết từ: mathforums.hcmup.edu.vn
- Tham khảo chi tiết: Module mod_rewrite - URL Rewriting Engine

(modRewrite là một module tuyệt vời của Apache. Bài này sẽ chỉ một số áp dụng của modRewrite để đùa nghịch với các địa chỉ web)
Các chỉ thị của modRewrite có thể đặt trong httpd.conf (phần cấu hình server, virtual host hoặc directory đều được) hoặc đặt trong .htaccess đều được.

Cú pháp đơn giản của nó là RewriteRule tìm-cái-gì thay-thế-bằng-cái-gì, nếu muốn tìm hiểu thêm bạn có thể tham khảo Apache manual

Để bật modRewrite trong .htaccess bạn dùng dòng RewriteEngine On. Nếu bị báo lỗi 500 thì có nghĩa là host của bạn không cài đặt module này.
Để cài đặt modRewrite, bạn có thể tham khảo các bài viết về cài đặt Apache.

1. Đổi phần mở rộng

Thay vì dùng index.php thì bạn có thể gọi bằng index.4u mà không cần đổi tên index.php thành index.4u
Dưới đây là đoạn mã minh hoạ. Mã lệnh:

  1. RewriteEngine on
  2. RewriteRule ^(.*)\.4u /$1.php [QSA]

QSA (Query String Appended) ý nói là phần sau dấu ? vẫn được thêm vào và giữ nguyên.

2. Không cần query string

Giả dụ bạn muốn /index.php?act=view&cid=8&id=123 tự động thay bằng /view/8/123/ chẳng hạn (theo thí dụ của bạn), thì ta dùng .htaccess như sau:

Mã lệnh RewriteEngine on

RewriteRule ^view/([0-9]+)/([0-9]+)/$ /index.php?act=view&cid=$1&id=$2

Giải thích sơ qua: dòng đầu tiên bật RewriteEngine, dòng thứ 2 có dạng RewriteRule tìm thay-thế, chuỗi tìm của ta là ^view/([0-9]+)/([0-9]+)/$ với dấu ^ cho biết là vị trí đầu tiên, $ là vị trí cuối, ([0-9]+) là một chuỗi chỉ gồm các kí tự 0 đến 9 (hay nói cách khác, là 1 con số). Trong phần thay-thế cũng không có gì đặc biệt, ngoại trừ $1$2 là các giá trị tìm thấy ứng với 2 cặp ngoặc ([0-9]+) trong chuỗi tìm.

Tương tự, bạn có thể thêm các RewriteRule khác theo ý thích.

Chúc bạn thành công!

Comments

Chào bạn.

"Nếu bị báo lỗi 500 thì có nghĩa là host của bạn không cài đặt module này."
Vậy làm sao để cài đặt module này ở localhost?
Mình muốn test chức năng của .htaccess ở local nhưng không biết phải khởi động như thế nào. Giúp mình với nhé.

Kích hoạt module rewrite

Kích hoạt module rewrite
- Vào folder đã cài đặt Apache, mở file conf/httpd.conf
- Dùng chức năng search, tìm dòng có chuỗi 'mod_rewrite'
- Uncomment (bỏ dấu # đầu dòng)
- Lưu file lại
- Khởi động lại Apache

Edit file .htaccess: Mở bằng editor nào cũng được, ngay cả notepad.

Thế Hồng,

Delete visited website on the Address bar

Co' ba.n na`o bie^'t delete the visited website on the address bar, username ..
usually they have done by click on "Tool" , then select "Internet Option" , select "General" tab, click on "Delete File" button, click on "Clear History" button....
Toi da~ la`m du'ng nhu* tre^n, but sometime in the regedit menu stored some usernames ...
C'am on* toila.net nhie^`u
Duy2007

đổi địa chỉ

em tạo web trên ucoz, bây giờ muốn đổi địa chỉ khác được hok, ví dụ như bấm a2ontop.com thì vào được a2ontop.ucoz.com hok?
giúp em với!

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <sup> <br> <p> <h3>
  • Lines and paragraphs break automatically.
  • Link to content with [[some text]], where "some text" is the title of existing content or the title of a new piece of content to create. You can also link text to a different title by using [[link to this title|show this text]]. Link to outside URLs with [[http://www.example.com|some text]], or even [[http://www.example.com]].
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. The supported tag styles are: <foo>, [foo]. PHP source code can also be enclosed in <?php ... ?> or <% ... %>.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.