Ứng dụng tập tin htaccess trên máy chủ Apache

Bạn đã từng nghe về tập tin .htaccess trên các máy chủ hệ Unix (FreeBSD, Linux, Solaris, True64…)? Bạn biết rằng tập tin này có thể điều khiển được khá nhiều thứ, thậm chí thay đổi được cả thiết lập mặc định của máy chủ Apache http://apache.org/. Thế nhưng bạn đã tận dụng được bao nhiêu lệnh trong tập tin này để làm cho website của mình mạnh mẽ, an toàn hơn?
Trong bài viết tổng hợp này, tác giả sẽ cùng bạn nghiên cứu, ứng dụng một số lệnh thông dụng nhất để thực hiện các tác vụ bảo vệ, điều khiển website theo ý bạn muốn. Nào, xin mời bạn!

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 đó mã số lỗi là mã số của lỗi phát sinh, sau đây là những lỗi hay gặp:

- 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…)

cò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. Ví dụ: ErrorDocument 404/trangloi.html hoặc: ErrorDocument500/loi/500.html
Bây giờ bạn hãy tải (upload) 2 tập tin .htaccess và trangloi.html lên hosting của mình.

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 dữ liệu luân chuyển (data transfer) 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) làm cho lượng dữ liệu luân chuyển 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 tôi 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.
Có thể sử dụng một hình ảnh nào đó cảnh cáo những kẻ “ăn trộm” băng thông, 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]

Không cho hiện danh sách tập tin trong thư mục

Trong trường hợp một thư mục nào đó không có tập tin index hoặc default, Apache sẽ hiển thị một danh sách liệt kê những tập tin có trong thư mục đó. Tuy nhiên nếu đây là những tài liệu nhạy cảm, bạn không muốn người khác thấy, hãy thêm lệnh sau vào tập tin .htaccess

Options –Indexes

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.

Cấm/hạn chế IP truy nhập

Một số người muốn làm ngập (flood) trang web của bạn, việc cần làm là ngăn cấm những IP của những người này truy nhập vào trang web, bạn thêm đoạn mã sau vào .htaccess: deny from 203.262.110.20; cho phép IP truy nhập: allow from 203.262.110.20.
Nếu bạn chỉ viết IP dưới dạng: 203.262.110 thì sẽ cấm tất cả IP trong dải từ 203.262.110.1 đến 203.262.110.254.
Sử dụng dòng lệnh sau: Deny from all sẽ cấm tất cả mọi truy nhập đến các trang web trong thư mục, tuy nhiên các tập tin trong đó vẫn có thể được sử dụng từ bên ngoài thông qua các lệnh dạng require hay include (trong lập trình PHP), có thể xem thêm mã nguồn của PHPBB forum,IBF… để hiểu rõ hơn.


Tự động chuyển đến địa chỉ mới (Redirection)
Bạn chuyển trang web của mình đến địa chỉ mới nhưng không phải ai cũng biết điều này, redirect truy nhập từ xa một cách đơn giản bằng lệnh sau:

Redirect/olddirectory http://www.trangwebmoi.com/thumucmoi ;

Tuỳ biến đuôi tập tin
Thông thường, tuỳ thuộc vào ngôn ngữ lập trình web mà bạn sử dụng tập tin sẽ có phần mở rộng khác nhau như: html, htm, asp, aspx, php, cgi, …Tuy nhiên nếu sử dụng .htaccess bạn có thể tác động vào máy chủ Apache, Apache sẽ gọi đến tập tin của bạn và trả về cho trình duyệt web của người dùng với phần mở rộng do bạn quy định trong .htaccess. Bạn sử dụng đoạn lệnh sau trong tập tin .htaccess:

RewriteEngine on
RewriteRule (.*)\.dll$ $1.html

Html là phần mở rộng thực sự của những tập tin trên website, dll là phần mở rộng do bạn lựa chọn. Lưu ý trong liên kết trên trang web, bạn phải gọi đúng đường dẫn đến tập tin với phần mở rộng mới (ở trên là dll), ví dụ http://www.trangweb.com/in dex.dll

Lưu ý khi sử dụng tập tin .htaccess:

- Chỉ áp dụng trên máy chủ Apache đã bật chế độ .htaccess, nếu chưa bạn hãy thử liên hệ với nhà cung cấp dich vụ hosting.
- Để tạo ra tập tin này bạn có thể sử dụng ngay chương trình Notepad của Windows: chọn chế độ save as với tên .htaccess, nhưng khi lưu nhớ bỏ đuôi txt.
-.htaccess chỉ có tác dụng đối với những tập tin ngang hàng (trong cùng thư mục với nó) hoặc thư mục con. Với thư mục, nó chỉ có tác dụng trong thư mục chứa nó và thư mục con, còn vô tác dụng với thư mục mẹ (parent directory).
- Bạn có thể dùng một số chương trình FTP (Leaf FTP, WS FTP, Cute FTP) để tải tập tin .htaccess lên hosting của mình với chế độ ASCII, nếu nó không hoạt động bạn thử CHMOD với giá trị 644.

這篇文章有幫助嗎? 0 Users Found This Useful (3 Votes)