Khi xây dựng website động bằng php hoặc asp.net chúng ta cần phải truyền các tham số qua đường link url. Điều đó khiến cho website trở nên kém bảo mật và hơn nữa sẽ làm chậm quá trình crawling của bọ tìm kiếm google. Bài viết này hướng dẫn các bạn tối ưu hóa URL theo chuẩn SEO đối với các website viết bằng php, sử dụng công cụ là file .htaccess - một file dùng để kiểm soát cách mà apache truy cập đến thư mục gốc của website.
Đầu tiên bạn phải duyệt qua tất cả các link nội bộ có trên trang chủ, bao gồm menu, các link bài viết, các link đến các nhóm bài viết hoặc sản phẩm... bạn bỏ qua các link đến các trang ngoài như yahoo, google, facebook...
Ví dụ website inquangtrung.vn có các url như sau
http://inquangtrung.vn/index.php
http://inquangtrung.vn/index.php?id=205
http://inquangtrung.vn/index.php?cid=75
http://inquangtrung.vn/index.php?pid=116
Nhận xét, như vậy các bài viết của website nói trên được truy xuất qua tham số id=n các sản phẩm được truy xuất qua pid=n và các danh mục sản phẩm bài viết được truy xuất qua cid=n, trong đó n chính là id của sản phẩm, bài viết hoặc categories, trong database.
Mục đích của chúng ta là viết lại các link trên dưới dạng thân thiện như sau:
với bài viết số 205: http://inquangtrung.vn/content/in-bao-bi-nhan-mac.html
với sản phẩm số 116: http://inquangtrung.vn/product/lich-tet-2014.html
với danh mục bài viết số 75: http://inquangtrung.vn/tin-tuc/tim-khuyen-mai/
với trang chủ chúng ta muốn xuất hiện là: http://inquangtrung.vn/index.html
Chúng ta sẽ phải tạo một file htacces với nội dung như sau
1 RewriteEngine On
2 RewriteCond %{REQUEST_FILENAME} -f [OR]
3 RewriteCond %{REQUEST_FILENAME} -l [OR]
4 RewriteCond %{REQUEST_FILENAME} -d
5 RewriteRule ^index.html$ index.php
6 RewriteRule ^content/([a-zA-Z0-9_-]+).html$ index.php?id=$1
7 RewriteRule ^product/([a-zA-Z0-9_-]+).html$ index.php?pid=$1
8 RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ index.php?cid=$2
Giải thích
Dòng thứ nhất là bật chế độ rewrite để áp dụng các câu lệnh RewriteRule bên dưới mỗi khi có một web request được gửi đến website này.
Dòng thứ 2, 3, 4 để control các yêu cầu liên quan đến thư mục và tên file vật lý trên đĩa cứng, chúng ta tạm bỏ qua không tìm hiểu kỹ vào 3 dòng này. Các bạn cứ copy là xong.
Dòng thứ 5: có tác dụng là khi xuất hiện một request đến website với url là http://inquangtrung.vn/index.html thì server sẽ tiếp nhận yêu cầu này nhưng khi gửi đến apache để xử lý nó sẽ gửi dòng http://inquangtrung.vn/index.php chứ không gửi request url gốc. Do đó apache tiến hành xử lý lệnh gọi đến file index.php. Về phía người dùng, dòng lệnh trên browser (filefox chẳng hạn) sẽ là index.html, nhưng thực chất họ sẽ nhận được kết quả từ file index.php. Tôi giải thích dài dòng ở câu lệnh này để ngắn gọn ở các câu lệnh sau, các bạn chú ý nhé.
Dòng thứ 6: Khi browser gửi yêu cầu truy xuất đến trang có dạng http://inquangtrung.vn/content/******.html thì thực chất server sẽ nhận được yêu cầu là http://inquangtrung.vn/index.php?id=****** Trong đó ****** là một chuỗi, có thể là con số hoặc cũng có thể là một string. Và khai báo ([a-zA-Z0-9_-]+) có nghĩa là ****** có thể là bất kỳ ký tự nào từ a-z, viết hoa A-Z hoặc các chữ số từ 0-9, dấu gạch dưới _ và dấu -.
Dòng thứ 7: tương tự dòng thứ 6 nhưng yêu cầu mà server nhận được sẽ là http://inquangtrung.vn/index.php?proid=******
Dòng thứ 8: Yêu cầu mà browser gửi lên sẽ có dạng là http://inquangtrung.vn/*****/xxxx/ (ví dụ http://inquangtrung.vn/tin-tuc/tin-noi-bo/) thì yêu cầu thực gửi đến server sẽ là http://inquangtrung.vn/index.php?catid=xxxx
Giải thích kỹ hơn:
Khi đó, chúng ta viết lại url trong htaccess như sau:
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+).html$ index.php?module=$1&type=$2&id=$3
Upload file .htaccess vừa tạo lên thư mục root của website (public_html) cùng chỗ với file index.php.
Giờ đây nếu bạn gõ http://inquangtrung.vn/index.html mà trang chủ của website http://inquangtrung.vn/index.php xuất hiện thì có nghĩa là file htaccess đã hoạt động, có thể đi uống một ly cafe để giải lao được rồi.
Còn nếu như báo lỗi, có nghĩa là bạn đã gõ sai một cái gì đó trong file .htaccess. Bạn hãy kiểm tra lại file htaccess và đối chiếu với hướng dẫn ở bước 2. Lưu ý là nếu bạn copy thì không copy các số đánh dấu dòng nhé, chỉ copy các câu lệnh phía sau.
Trường hợp đã kiểm tra kỹ không có sai sót gì trong file .htaccess. Thì có nghĩa là hosting server của bạn đang cấm dùng htaccess. Muốn gỡ bỏ lệnh cấm này cũng khá đơn giản tuy nhiên bạn phải là người có quyền quản trị cao nhất đối với server và nếu bạn không có quyền này, hãy liên hệ với công ty hosting để họ mở htaccess cho bạn. Cũng có một số thủ thuật nữa để tự mở htaccess cho thư mục của mình, tuy nhiên sẽ case-by-case. Bạn có thể liên hệ với Thương Hiệu Web để hỗ trợ trong từng trường hợp cụ thể.
Giờ hãy giả định là bạn đã test ok với index.php, vậy bạn hãy test với các dòng sau
http://inquangtrung.vn/content/205.html
http://inquangtrung.vn/product/116.html
http://inquangtrung.vn/tin-tuc/75/
Chắc chắn bạn sẽ nhận được kết quả lần lượt là bài viết có id=205, sản phẩm có pid=116 và danh mục bài viết có cid=75
Tuy nhiên có 2 vấn đề xảy ra:
Thứ nhất: chúng ta đâu có muốn hiện 205.html hay 116.html mà chúng ta muốn phải là in-bao-bi-nhan-mac.html và lich-tet-2014.html cơ mà. Lời giải cho vấn đề này sẽ nằm ở bước 5. Và khi đó bạn phải sửa đôi chút trong code php và cơ sở dữ liệu MySQL.
Thứ hai: Bạn vào được link http://inquangtrung.vn/content/205.html nhưng sẽ thấy trang bị biến đổi hoàn toàn về bố cục, một số ảnh không xuất hiện. Đừng có hoảng, đó là hiện tượng mất đường dẫn tới stylesheet và các file ảnh. Chúng ta cũng sẽ xem xét vấn đề này ở bước điều chỉnh code đường dẫn ngay bên dưới đây thôi.
Vấn đề mất stylesheet hoặc ảnh trên website khi chúng ta truy cập một link ảo dạng http://inquangtrung.vn/content/205.html đó là do mặc dù là link ảo nhưng apache vẫn nhớ link này để truyền tham số cho những chỗ mà chúng ta dùng đường dẫn tương đối. do vậy trong code những đường dẫn tương đối nào có dạng src="images/abc.jpg" sẽ bị thay thế bằng đường dẫn tuyệt đối là http://inquangtrung.vn/content/images/abc.jpg trong khi đó chỉ là một đường dẫn ảo vì thư mục content không tồn tại.
Để khắc phục tình trạng này có 2 cách.
1) mở tung code của website xem chỗ nào có đường dẫn tương đối thì thay thế bằng đường dẫn tuyệt đối có thực ví dụ src="images/abc.jpg" thì thay bằng "http://inquangtrung.vn/images/abc.jpg".
2) sử dụng một biến php để điều chỉnh url cho đồng nhất. bằng cách chèn thêm các lệnh sau vào đầu file index.php như hình ảnh sau:

Bước 1: Phân tích url
Đầu tiên bạn phải duyệt qua tất cả các link nội bộ có trên trang chủ, bao gồm menu, các link bài viết, các link đến các nhóm bài viết hoặc sản phẩm... bạn bỏ qua các link đến các trang ngoài như yahoo, google, facebook...
Ví dụ website inquangtrung.vn có các url như sau
http://inquangtrung.vn/index.php
http://inquangtrung.vn/index.php?id=205
http://inquangtrung.vn/index.php?cid=75
http://inquangtrung.vn/index.php?pid=116
Nhận xét, như vậy các bài viết của website nói trên được truy xuất qua tham số id=n các sản phẩm được truy xuất qua pid=n và các danh mục sản phẩm bài viết được truy xuất qua cid=n, trong đó n chính là id của sản phẩm, bài viết hoặc categories, trong database.
Bước 2: tạo file htaccess
Mục đích của chúng ta là viết lại các link trên dưới dạng thân thiện như sau:
với bài viết số 205: http://inquangtrung.vn/content/in-bao-bi-nhan-mac.html
với sản phẩm số 116: http://inquangtrung.vn/product/lich-tet-2014.html
với danh mục bài viết số 75: http://inquangtrung.vn/tin-tuc/tim-khuyen-mai/
với trang chủ chúng ta muốn xuất hiện là: http://inquangtrung.vn/index.html
Chúng ta sẽ phải tạo một file htacces với nội dung như sau
1 RewriteEngine On
2 RewriteCond %{REQUEST_FILENAME} -f [OR]
3 RewriteCond %{REQUEST_FILENAME} -l [OR]
4 RewriteCond %{REQUEST_FILENAME} -d
5 RewriteRule ^index.html$ index.php
6 RewriteRule ^content/([a-zA-Z0-9_-]+).html$ index.php?id=$1
7 RewriteRule ^product/([a-zA-Z0-9_-]+).html$ index.php?pid=$1
8 RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ index.php?cid=$2
Giải thích
Dòng thứ nhất là bật chế độ rewrite để áp dụng các câu lệnh RewriteRule bên dưới mỗi khi có một web request được gửi đến website này.
Dòng thứ 2, 3, 4 để control các yêu cầu liên quan đến thư mục và tên file vật lý trên đĩa cứng, chúng ta tạm bỏ qua không tìm hiểu kỹ vào 3 dòng này. Các bạn cứ copy là xong.
Dòng thứ 5: có tác dụng là khi xuất hiện một request đến website với url là http://inquangtrung.vn/index.html thì server sẽ tiếp nhận yêu cầu này nhưng khi gửi đến apache để xử lý nó sẽ gửi dòng http://inquangtrung.vn/index.php chứ không gửi request url gốc. Do đó apache tiến hành xử lý lệnh gọi đến file index.php. Về phía người dùng, dòng lệnh trên browser (filefox chẳng hạn) sẽ là index.html, nhưng thực chất họ sẽ nhận được kết quả từ file index.php. Tôi giải thích dài dòng ở câu lệnh này để ngắn gọn ở các câu lệnh sau, các bạn chú ý nhé.
Dòng thứ 6: Khi browser gửi yêu cầu truy xuất đến trang có dạng http://inquangtrung.vn/content/******.html thì thực chất server sẽ nhận được yêu cầu là http://inquangtrung.vn/index.php?id=****** Trong đó ****** là một chuỗi, có thể là con số hoặc cũng có thể là một string. Và khai báo ([a-zA-Z0-9_-]+) có nghĩa là ****** có thể là bất kỳ ký tự nào từ a-z, viết hoa A-Z hoặc các chữ số từ 0-9, dấu gạch dưới _ và dấu -.
Dòng thứ 7: tương tự dòng thứ 6 nhưng yêu cầu mà server nhận được sẽ là http://inquangtrung.vn/index.php?proid=******
Dòng thứ 8: Yêu cầu mà browser gửi lên sẽ có dạng là http://inquangtrung.vn/*****/xxxx/ (ví dụ http://inquangtrung.vn/tin-tuc/tin-noi-bo/) thì yêu cầu thực gửi đến server sẽ là http://inquangtrung.vn/index.php?catid=xxxx
Giải thích kỹ hơn:
- Các ký tự là ^ để bắt đầu chuỗi url và $ để kết thúc chuỗi url tuyệt đối không thay đổi.
- htaccess coi giá trị nằm trong ( ....) là một tham số, nếu có nhiều tham số, nó sẽ đánh số từ trái qua phải. Và khi biên dịch nó sẽ được ký hiệu là $n trong đó n là vị trí của tham số, trong ví dụ trên, dòng số 6, số 7 chỉ có một tham số và nó được biên dịch là $1, còn dòng số 8 có 2 tham số, nhưng chúng ta chỉ quan tâm đến tham số thứ 2 nên chúng ta truyền tham số này cho cid. Nếu như các bạn có thói quen dùng nhiều tham số trong khi viết code php thì sẽ sử dụng hết các tham số này, chẳng hạn một bạn nào đó viết code truyền tham số qua phương thức GET như sau:
Khi đó, chúng ta viết lại url trong htaccess như sau:
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+).html$ index.php?module=$1&type=$2&id=$3
Bước 3: Kiểm tra kết quả
Upload file .htaccess vừa tạo lên thư mục root của website (public_html) cùng chỗ với file index.php.
Giờ đây nếu bạn gõ http://inquangtrung.vn/index.html mà trang chủ của website http://inquangtrung.vn/index.php xuất hiện thì có nghĩa là file htaccess đã hoạt động, có thể đi uống một ly cafe để giải lao được rồi.
Còn nếu như báo lỗi, có nghĩa là bạn đã gõ sai một cái gì đó trong file .htaccess. Bạn hãy kiểm tra lại file htaccess và đối chiếu với hướng dẫn ở bước 2. Lưu ý là nếu bạn copy thì không copy các số đánh dấu dòng nhé, chỉ copy các câu lệnh phía sau.
Trường hợp đã kiểm tra kỹ không có sai sót gì trong file .htaccess. Thì có nghĩa là hosting server của bạn đang cấm dùng htaccess. Muốn gỡ bỏ lệnh cấm này cũng khá đơn giản tuy nhiên bạn phải là người có quyền quản trị cao nhất đối với server và nếu bạn không có quyền này, hãy liên hệ với công ty hosting để họ mở htaccess cho bạn. Cũng có một số thủ thuật nữa để tự mở htaccess cho thư mục của mình, tuy nhiên sẽ case-by-case. Bạn có thể liên hệ với Thương Hiệu Web để hỗ trợ trong từng trường hợp cụ thể.
Giờ hãy giả định là bạn đã test ok với index.php, vậy bạn hãy test với các dòng sau
http://inquangtrung.vn/content/205.html
http://inquangtrung.vn/product/116.html
http://inquangtrung.vn/tin-tuc/75/
Chắc chắn bạn sẽ nhận được kết quả lần lượt là bài viết có id=205, sản phẩm có pid=116 và danh mục bài viết có cid=75
Tuy nhiên có 2 vấn đề xảy ra:
Thứ nhất: chúng ta đâu có muốn hiện 205.html hay 116.html mà chúng ta muốn phải là in-bao-bi-nhan-mac.html và lich-tet-2014.html cơ mà. Lời giải cho vấn đề này sẽ nằm ở bước 5. Và khi đó bạn phải sửa đôi chút trong code php và cơ sở dữ liệu MySQL.
Thứ hai: Bạn vào được link http://inquangtrung.vn/content/205.html nhưng sẽ thấy trang bị biến đổi hoàn toàn về bố cục, một số ảnh không xuất hiện. Đừng có hoảng, đó là hiện tượng mất đường dẫn tới stylesheet và các file ảnh. Chúng ta cũng sẽ xem xét vấn đề này ở bước điều chỉnh code đường dẫn ngay bên dưới đây thôi.
Bước 4: Điều chỉnh code đường dẫn
Vấn đề mất stylesheet hoặc ảnh trên website khi chúng ta truy cập một link ảo dạng http://inquangtrung.vn/content/205.html đó là do mặc dù là link ảo nhưng apache vẫn nhớ link này để truyền tham số cho những chỗ mà chúng ta dùng đường dẫn tương đối. do vậy trong code những đường dẫn tương đối nào có dạng src="images/abc.jpg" sẽ bị thay thế bằng đường dẫn tuyệt đối là http://inquangtrung.vn/content/images/abc.jpg trong khi đó chỉ là một đường dẫn ảo vì thư mục content không tồn tại.
Để khắc phục tình trạng này có 2 cách.
1) mở tung code của website xem chỗ nào có đường dẫn tương đối thì thay thế bằng đường dẫn tuyệt đối có thực ví dụ src="images/abc.jpg" thì thay bằng "http://inquangtrung.vn/images/abc.jpg".
2) sử dụng một biến php để điều chỉnh url cho đồng nhất. bằng cách chèn thêm các lệnh sau vào đầu file index.php như hình ảnh sau:
Sau đó trong các đường dẫn tương đối có dạng src="images/abc.jpg" hoặc href="..." chúng ta sẽ chèn thay thế code sau:
Cách thứ 2 chuyên nghiệp hơn vì sau này nếu chúng ta đổi tên miền, sẽ không phải sửa lại từng dòng lệnh có chứa đường dẫn tuyệt đối nữa.
- second_id không được null để trang web có thể truy xuất và gọi ra
- second_id không được trùng nhau, nó phải là unique key
- second_id không được dùng dấu cách và các ký tự đặc biệt khác như ^&$...
- second_id không nhất thiết phải có đuôi html vì sau này có thể thêm vào từ code
Như vậy chúng ta sẽ dùng second_id có dạng như sau: ví dụ bài viết số 205 sẽ dùng second_id là "in-bao-bi-nhan-mac" còn sản phẩm số 116 sẽ có second_id = "lich-tet-2014"
Để tạo một column mới trong table không có gì phải bàn. Chúng ta chỉ bàn cách update table này như thế nào? Do yêu cầu của SEO là tên sản phẩm hoặc tên bài viết phải có chứa từ khóa và phải xuất hiện trên url vì thế chúng ta sẽ lấy luôn tên bài viết làm second_id, tuy nhiên phải loại bỏ đi các ký tự đặc biệt và dấu cách. Có 2 cách làm
Thủ công: Bạn thêm vào một trường nhập dữ liệu trong phần quản trị nội dung (CMS) sao cho khi sửa bài viết chúng ta có thể gõ second_id. Sau đó bạn mở từng bài viết ra và sửa bằng CMS.
Tự động: Bạn viết một script php nho nhỏ để nó biến đổi chuỗi tên bài viết dạng "In bao bì nhãn mác" thành "in-bao-bi-nhan-mac" rồi update luôn vào second_id. Code này tôi có nhưng phải customize theo từng cơ sở dữ liệu khác nhau nên bạn nào có nhu cầu thì rồi về tự sửa. Thuật toán cũng đơn giản thôi: duyệt table bằng một lệnh while sau đó đọc column tên bài viết ra, biến đổi chuỗi, rồi ghi chuỗi kết quả vào column second_id.
Sau khi đã update column second_id cho tất cả các bài viết cũ, bạn sẽ cần phải sửa các code liên quan đến table content và product. Sao cho khi list chúng ra không bị lỗi (do đã thay đổi cấu trúc table) và mỗi khi tạo bài viết hay sản phẩm mới thì biến đổi chuỗi tên bài viết thành chuỗi url thân thiện rồi gắn thêm vào column second_id.
Bạn cũng cần làm tương tự với table categories để có second_id dùng trong trường hợp xuất các bài viết cùng chủ đề.
Sau khi đã điều chỉnh database và sửa code CMS back-end. bạn chỉ còn cách thành công một bước nữa thôi, đó là sẽ phải sửa các module như menu, module hiển thị nội dung.... ở trang chủ sao cho các link bây giờ thay vì lấy ra id theo cách cũ kiểu như "index.php?conid=37" sẽ trở thành "content/in-bao-bi-nhan-mac.html"
Đồng thời sửa đổi code sao cho khi module nào truy xuất đến database, nó sẽ truy xuất theo second_id chứ không truy xuất theo id truyền thống nữa.
Những phần biến đổi trong code ở bước 5 và bước 6 này sẽ tùy theo từng code của các bạn nên tôi không đưa ví dụ ra đây. Nếu bạn này vẫn thấy khó hiểu, hãy gửi code cho tôi, tôi sẽ hướng dẫn bạn làm cụ thể.
Có câu code nhất biến lỗi vạn biến. Tôi cũng không thể biết các bạn có gặp lỗi gì trong quá trình thực hành hay không vì các lỗi rất đa dạng, các bạn cứ tuần tự theo từng bước nói trên gặp lỗi ở bước nào thì ngừng ngay để xử lý ở bước đó chứ đừng đi tiếp kẻo loạn hết website lên. Nếu cần trợ giúp hãy gọi cho tôi. mọi việc sẽ clear thôi.
Chúc các bạn thành công!
Cách thứ 2 chuyên nghiệp hơn vì sau này nếu chúng ta đổi tên miền, sẽ không phải sửa lại từng dòng lệnh có chứa đường dẫn tuyệt đối nữa.
Bước 5: Điều chỉnh database và sửa code back-end
Cách thức duy nhất để gọi một bài viết, một category hay một sản phẩm từ database ra website là dùng ID, thông thường chúng ta dùng ID này là một con số duy nhất và đồng thời là primary key của table. Bây giờ để có được đường dẫn thân thiện hơn chứ không phải là 205.html, chúng ta cần phải sinh ra một column nữa được gọi là ID phụ. Column này bạn hãy đặt tên là second_id. Sau đó bạn có 2 cách để bổ sung giá trị cho column này nhưng cần tuân thủ các nguyên tắc sau- second_id không được null để trang web có thể truy xuất và gọi ra
- second_id không được trùng nhau, nó phải là unique key
- second_id không được dùng dấu cách và các ký tự đặc biệt khác như ^&$...
- second_id không nhất thiết phải có đuôi html vì sau này có thể thêm vào từ code
Như vậy chúng ta sẽ dùng second_id có dạng như sau: ví dụ bài viết số 205 sẽ dùng second_id là "in-bao-bi-nhan-mac" còn sản phẩm số 116 sẽ có second_id = "lich-tet-2014"
Để tạo một column mới trong table không có gì phải bàn. Chúng ta chỉ bàn cách update table này như thế nào? Do yêu cầu của SEO là tên sản phẩm hoặc tên bài viết phải có chứa từ khóa và phải xuất hiện trên url vì thế chúng ta sẽ lấy luôn tên bài viết làm second_id, tuy nhiên phải loại bỏ đi các ký tự đặc biệt và dấu cách. Có 2 cách làm
Thủ công: Bạn thêm vào một trường nhập dữ liệu trong phần quản trị nội dung (CMS) sao cho khi sửa bài viết chúng ta có thể gõ second_id. Sau đó bạn mở từng bài viết ra và sửa bằng CMS.
Tự động: Bạn viết một script php nho nhỏ để nó biến đổi chuỗi tên bài viết dạng "In bao bì nhãn mác" thành "in-bao-bi-nhan-mac" rồi update luôn vào second_id. Code này tôi có nhưng phải customize theo từng cơ sở dữ liệu khác nhau nên bạn nào có nhu cầu thì rồi về tự sửa. Thuật toán cũng đơn giản thôi: duyệt table bằng một lệnh while sau đó đọc column tên bài viết ra, biến đổi chuỗi, rồi ghi chuỗi kết quả vào column second_id.
Sau khi đã update column second_id cho tất cả các bài viết cũ, bạn sẽ cần phải sửa các code liên quan đến table content và product. Sao cho khi list chúng ra không bị lỗi (do đã thay đổi cấu trúc table) và mỗi khi tạo bài viết hay sản phẩm mới thì biến đổi chuỗi tên bài viết thành chuỗi url thân thiện rồi gắn thêm vào column second_id.
Bạn cũng cần làm tương tự với table categories để có second_id dùng trong trường hợp xuất các bài viết cùng chủ đề.
Bước 6: Sửa code ở front-end.
Sau khi đã điều chỉnh database và sửa code CMS back-end. bạn chỉ còn cách thành công một bước nữa thôi, đó là sẽ phải sửa các module như menu, module hiển thị nội dung.... ở trang chủ sao cho các link bây giờ thay vì lấy ra id theo cách cũ kiểu như "index.php?conid=37" sẽ trở thành "content/in-bao-bi-nhan-mac.html"
Đồng thời sửa đổi code sao cho khi module nào truy xuất đến database, nó sẽ truy xuất theo second_id chứ không truy xuất theo id truyền thống nữa.
Những phần biến đổi trong code ở bước 5 và bước 6 này sẽ tùy theo từng code của các bạn nên tôi không đưa ví dụ ra đây. Nếu bạn này vẫn thấy khó hiểu, hãy gửi code cho tôi, tôi sẽ hướng dẫn bạn làm cụ thể.
Bước 7: cuối cùng là test và fix lỗi.
Có câu code nhất biến lỗi vạn biến. Tôi cũng không thể biết các bạn có gặp lỗi gì trong quá trình thực hành hay không vì các lỗi rất đa dạng, các bạn cứ tuần tự theo từng bước nói trên gặp lỗi ở bước nào thì ngừng ngay để xử lý ở bước đó chứ đừng đi tiếp kẻo loạn hết website lên. Nếu cần trợ giúp hãy gọi cho tôi. mọi việc sẽ clear thôi.
Chúc các bạn thành công!











