hn4u @ Last updated 21/11/04 22:42
Go to my homepage at http://4u.jcisio.com
Full version available at http://4u.jcisio.com/r/article1469.htm

Hải Nam

Một số kĩ thuật với .htaccess

.htaccess là tập tin cấu hình ở mức thư mục của Apache. Nếu khai thác tốt .htaccess, ta có thể làm nhiều việc khá dễ dàng chỉ với vài dòng lệnh.

Chống hotlink

Hotlink nghĩa là một tập tin của ta được đọc trực tiếp từ trang khác. Thí dụ: bạn có một ảnh JPEG rất đẹp 200KB ở máy chủ của bạn, nhưng người khác lại dùng thẻ <IMG> để hiển thị hình ảnh này ở trang web của họ. Đây là hành vi ăn cắp băng thông của bạn, vì mọi người xem không ai biêt rằng cái ảnh đó của bạn, và bạn đã mất băng thông một cách vô ích.

Rất may, hầu hết các trình duyệt khi yêu cầu một tập tin đều có gửi kèm một thông số cho biết nó được yêu cầu từ trang web nào. Vậy bạn chỉ cần đơn giản một câu kiểm tra là xong.

Cách làm:

CODE
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yoursite\.com.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://your-ip.*$ [NC]
RewriteRule .*\.(jpg|gif)$ http://www.yoursite.com/hotlink.jpg [NC]

Trong đó hotlink.jpg là ảnh sẽ thay thể các ảnh kia (bạn có thể ghi một câu thông báo chẳng hạn vào tấm ảnh đó). Và tất cả ảnh được link đến từ trang khác sẽ không hiện ra, mà được thay bằng ảnh hotlink.jpg. Tất nhiên, bạn có thể sửa lại để ngăn các tập tin khác ngoài GIF và JPG.

Đôi khi, bạn muốn chống hotlink trong thư mục gallery thôi chẳng hạn, thì dòng cuối cần sửa lại thành:

CODE
RewriteRule .*gallery.*\.(jpg|gif)$ http://www.yoursite.com/hotlink.jpg [NC]

Thế là ai link đến trang của bạn tùy thích, nhưng mà link đến các ảnh trong thư mục gallery sẽ bị lỗi

Trang báo lỗi

Bình thường, khi gặp lỗi, bạn sẽ nhận được một thông báo chán ngắn từ Apache. Tuy nhiên, với .htaccess bạn có thể tuỳ biến trang thông báo này. Thí dụ sau tạo thông báo lỗi tuỳ biến cho các lỗi 403 (cấm truy cập) và 404 (trang không tồn tại):

CODE
ErrorDocument 403 /error_forbidden.htm
ErrorDocument 404 /error_notfound.htm

Trong đó các trang error_forbidden.htmerror_notfound.htm bạn có thể ghi gì tuỳ ý.

Chọn trang web theo thời điểm

Đoạn mã sau đây sẽ hiển thị trang sleep.htm nếu ai đó truy cập vào trang của bạn trong khoảng 1 đến 4 giờ sáng

CODE
RewriteEngine on
RewriteCond %{TIME_HOUR}%{TIME_MIN} >0100
RewriteCond %{TIME_HOUR}%{TIME_MIN} <0400
RewriteRule ^.*$ http://www.yourdomain.com/sleep.htm

Nhắc nhở bật cookie

Bạn bắt buộc người dùng phải chấp nhận cookie, và muốn kiểm tra cookie đã được thiết lập hay chưa. Rất đơn giản, đoạn sau sẽ thay tất cả các ảnh một một tấm ảnh kêu người dùng bất cookie

CODE
RewriteEngine on
RewriteCond %{HTTP_COOKIE} !^.*cookies=true.*$
RewriteRule .*[Jj][Pp][Gg]$|.*[Gg][Ii][Ff]$ /cookies/enable.gif

Việc cần chuẩn bị trước đó là cần có tập tin /cookies/enable.gif và đặt một cookie tên cookies với giá trị là true

Chặn ip của ai đó

Đôi khi bạn muốn giới hạn một trang nào đó chỉ cho phép 1 vài người truy cập (như khu vực Admin), hoặc cho tất cả trừ một vài người không được phép truy cập vào (ngăn những ip đang flood). Cả hai trường hợp này có thể giải quyết nhẹ nhàng nhờ .htaccess

Chỉ cho phép một số ip truy cập

Đầu tiên ta cấm tất cả, sau đó cho phép một số:

CODE
order deny,allow
deny from all
allow from 127.0.0.1
allow from 192.168.0.1

Đoạn trên chỉ cho phép ip 127.0.0.1 và 192.168.0.1 truy cập vào trang web (nếu bạn đặt .htaccess ở thư mục gốc). Để cấm thư mục admin, bạn đặt nó vào thư mục admin.

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

Ta làm hơi ngược lại một tí

CODE
order allow,deny
allow from all
deny from 203.113.135.6
deny from 203.162.*

Ta đã cấm ip 203.113.135.6 và tất cả các ip bắt đầu bằng 203.162


hainam4u @ Last updated 21/11/04 22:42
Go to my homepage at http://4u.jcisio.com