Lập trình , Thiết kế website, Auto Game Online

Hướng dẫn Rewrite URL sử dụng .htaccess

0
0
(0)

Hướng dẫn Rewrite URL sử dụng .htaccess

December 16th, 2010

Goto commentsLeave a comment

Bạn biết gì về Rewrite URLRewrite URL được hiểu 1 cách đơn giản là viết lại (rewrite) đường dẫn của website (url) của bạn cho đẹp, cho dễ nhớ và thân thiện với công cụ tìm kiếm. Bạn nghĩ sao nếu phải gõ tay hoặc copy dòng địa chỉ này paste vào trình duyệt:

http://www.laptrinhwebphp.com/index.php?post.php?post=377&action=edit

Hay bạn thích địa chỉ dạng này hơn:

http://www.laptrinhwebphp.com/post/abc.html

Bài viết dưới đây sẽ hướng dẫn các bạn sử dụng sức mạnh của tập tin .htaccess, qua đó viết lại đường dẫn website của bạn một cách thân thiện (friendly url).

 

Hai việc cần phải làm ngay bây giờ đó là:

Công việc 1: Mở chức năng mod_rewrite của wampserver lên: (xem hình bên dưới)

Bạn mở file httph.conf  tìm đến dòng :  #LoadModule rewrite_module modules/mod_rewrite.so, bỏ dấu # đi
(sẽ trở thành : LoadModule rewrite_module modules/mod_rewrite.so)

Công việc 2: tạo 1 file có tên là .htaccess trong thư mục gốc của bạn

Bây giờ đến phần hấp dẫn đây, tùy theo nhu cầu viết lại đường dẫn, mà nội dung của file .htaccess sẽ có nội dung lần lượt như sau:
1. product.php?id=12 —> product-12.html 

Đây là một ví dụ cực kỳ cơ bản của rewrite url, thường dùng để che dấu đuôi PHP:

RewriteEngine on
RewriteRule ^product-([0-9]+).html$ product.php?id=$1

2. product.php?id=12 —> product/ipod-nano/12.html

Một SEOer chuyên nghiệp luôn biết khéo léo hiển thị từ khoá chính trên URL. Như trong ví dụ sau, URL hiển thị tên của sản phẩm chính:

RewriteEngine on
RewriteRule ^product/([a-zA-Z0-9_-]+)/([0-9]+).html$ product.php?id=$2

3. Non www URL —> www URL

Nếu bạn muốn khi visitor gõ vào trình duyệt laptrinhwebphp.com thì được chuyển thẳng vàowww.laptrinhwebphp.com thì cấu hình như sau:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^laptrinhwebphp.com$
RewriteRule (.*) http://www.laptrinhwebphp.com/$1 [R=301,L]

4) laptrinhwebphp.com/user.php?username=xyz —> laptrinhwebphp.com/xyz

Nếu website của bạn có một lượng lớn thành viên (như mạng xã hội, diễn đàn), đây là một cách rất hay để rút gọn liên kết cho thành viên dễ nhớ

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ user.php?username=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ user.php?username=$1

5) Chuyển domain vào cấp thư mục:

Trong quá trình phát triển website, luôn luôn có sự thay đổi (về mã nguồn, cơ sở dữ liệu, cấu trúc site,…). Ví dụ laptrinhwebphp.com trước giờ vẫn chạy ở thư mục gốc (root), giả sử vì một lý do nào đó, Việt Coding cần dùng root cho việc khác và muốn chuyển webblog hiện tại vào thư mục /blog/ thì sao ?

RewriteEngine On
RewriteCond %{HTTP_HOST} ^laptrinhwebphp.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.laptrinhwebphp.com$
RewriteCond %{REQUEST_URI} !^/blog/
RewriteRule (.*) /blog/$1

Thế là xong ! Từ nay mọi truy vấn đến laptrinhwebphp.com hoặc www.laptrinhwebphp.comđều được redirect vào laptrinhwebphp.com/blog

6) Tạo trang báo lỗi mang màu sắc cá nhân

-Trong quá trình làm việc với client* nếu có lỗi xảy ra (ví dụ như không tìm thấy tập tin) thì Apache sẽ báo lỗi bằng một trang có sẵn hiển thị mã số của lỗi đó* rất không đẹp và khó hiểu.

-Với .haccess thì bạn có thể tự tạo các trang báo lỗi hay hơn. Để làm được điều này thì trong tập tin .htaccess bạn thêm dòng sau:

ErrorDocument mã_số_lỗi /trangloi.html 

Trong đó ErrorDocument là Câu lệnh của tệp tin ( ko được thay đổi) mã số lỗi là một số tự nhiên : trangloi.html là trang web mà bạn muốn hiển thị khi lỗi phát sinh* có thể đưa vào tập tin này nội dung hay đồ hoạ gì tùy bạn* chẳng hạn liên kết trở về trang chính của trang web
Các mã số lỗi hay gặp là :

 401 – Authorization Required (cần password để truy nhập)
400 – Bad request (Lỗi do yêu cầu)
403 – Forbidden (không được vào)
500 – Internal Server Error (lỗi server)
404 – Wrong page (lỗi trang* không tìm thấy…)
VD: Ta có câu lệnh sau trong .htaccess:

Ví dụ:

ErrorDocument 404/loi404.html 

 

Khi bị dính lỗi này : Trình duyệt sẽ tự động chuyển bạn đến trang loi.404.html nằm ngang hàng với tệp tin .htaccess

7) Chống ăn cắp băng thông (bandwidth)

-Thông thường những dịch vụ lưu trữ web chỉ cung cấp cho bạn một lượng BW nhất định hàng tháng và khi bạn sử dụng hết lượng dữ liệu này* website của bạn sẽ tự động bị đóng cửa. Bạn sẽ phải trả thêm tiền cho lượng băng thông vượt quá hoặc phải buộc lòng chờ đến tháng sau.

-Nếu hình ảnh* dữ liệu* … của bạn bị các website khác “ăn trộm” (bằng các thủ thuật đơn giản vd:cặp tag [IMG]) làm cho lượng BW của bạn tăng lên* thì có nghĩa là bạn sẽ phải trả tiền cho cái mà bạn không sử dụng. Sử dụng tập tin .htaccess là một giải pháp hoàn hảo* để ngăn chặn việc sử dụng hình ảnh trái phép trên website của bạn. Bạn chỉ việc đưa vào tập tin .htaccess nội dung sau :

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?trangweb\.com/.*$ [NC] RewriteRule \.(gif|jpg)$ – [F]

Ở đoạn mã trên Pumama sử dụng module Rewrite của máy chủ Apache* bạn chỉ việc thay đổi trangweb.com thành địa chỉ website của mình.
Thế là ai link đến trang của bạn tùy thích* nhưng mà link đến các ảnh sẽ bị lỗi nặng nề.

Hoặc Có thể sử dụng một hình ảnh nào đó cảnh cáo những kẻ “ăn trộm” BW* bạn dùng dòng lệnh sau:

RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?trangweb\.com/.*$ [NC] RewriteRule \.(gif|jpg)$http://www.trangweb.com/diehotlinker.jpg [R*L]

Bạn nhớ thay cái link http://www.trangweb.com/diehotlinker.jpg thành link IMAGE mà bạn muốn hiển thị khi bị ăn cắp IMAGE.

8) Thay thế trang index

-Thông thường khi truy nhập vào một trang web* Apache sẽ tìm tập tin index.htm hoặc default.htm trả kết quả về cho trình duyệt* bạn có thể dùng .htaccess thay đổi mặc định này.

DirectoryIndex index.php index .php3 messagebrd.pl index.html index.htm

Với dòng lệnh này thì tất cả các tập tin được liệt kê sẽ được tìm theo thứ tự khi có yêu cầu tới thư mục hiện hành* trang nào được tìm thấy đầu tiên sẽ thành trang index của thư mục.

9) Cấm/hạn chế IP truy nhập(rất hay)

Bạn phát hiện ra có một số người phá trang web bạn hay thực hiện những hành vi ko chính đáng làm tổn hại đến trang web của bạn (vd điển hình là bấm nhìu lần vô quảng cáo Google ).Bạn muốn ngăn cấm ko cho người đó típ tục phá phách? .Dòng lệnh sau trong tập tin .htaccess sẽ giúp bạn một cách triệt để và hiệu quả .

+Chỉ cho phép một số IP truy cập:

order deny*allow
deny from all
allow from IP
allow from 203.162.*

Với deny là cấm – allow là cho phép – order deny*allow phải có
Bạn có thể để Ip dạng 203.162.*(có thể thay đổi tùy bạn) – việc này sẽ cho phép các Ip bắt đầu bằng 203.162

+Cấm một số ip truy cập:

order allow*deny
allow from all
deny from IP
deny from 203.162.*

Với deny là cấm – allow là cho phép – order deny*allow phải có
Bạn có thể để Ip dạng 203.162.*(có thể thay đổi tùy bạn) – việc này sẽ cấm các Ip bắt đầu bằng 203.162

P/S: 2 đoạn code trên rất hữu dụng với các WebMaster trong việc bảo mật. Nó sẽ ngăn ko cho các IP ko hợp lệ vô trang Admin(bạn phải đặt .htaccess trong file ADMIN thì mới có tác dụng)

10) 301 redirect

-Cách này sẽ giúp cho các WebMaster mong muốn kiếm tiền từ quảng cáo(nhất là GA) nó sẽ bắt người dùng sử dụng một tên miền nhất định do bạn chọn (một domain sẽ có 2 kiểu địa chỉ (Vd: www.pumamavn.com và pumamavn.com)

Sử dụng cả 2 kiểu địa chỉ sẽ làm giảm traffic của site bạn nên Pumama lựa chọn cách sau để tối ưu hóa link nhằm thân thiện hơn với các hệ thống quảng cáo.

Bạn thêm code sau vào .htaccess:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^\.pumamavn\.com$[NC]
RewriteRule ^(.*)$ http://www.pumamavn.com [R=301*L]

– Bạn phải thay pumamavn.com bằng địa chỉ của bạn. Các câu lệnh trên sẽ chuyển tất cả các địa chỉ pumamavn.com thành www.pumamavn.com

Tất nhiên, URL rewriting rất đa dạng và phong phú, tuỳ sự sáng tạo của từng webmaster mà sẽ cho ra những url độc đáo không đụng hàng, ví dụ như:

http://abc.com/Music/#List_Album2,-1,1 

http://abc.com/Products/#IPhone|3GS|32G

Bài viết được tham khảo từ các nguồn: kenhso.com, vietvbb.com

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

Leave A Reply

Your email address will not be published.