Cơ bản về .htaccess & cách sử dụng

.htaccess là tên một chương trình chạy trên môi trường Unix dưới host server Apache nhằm hạn chế quyền truy xuất không hợp lệ. File .htaccess sẽ được đặt ở thư mục cần thiết lập hạn chế quyền truy xuất hoặc tạo các trang báo lỗi,..
Bài viết này sẽ trình bày một số cách sử dụng .htacces trên các server sử dụng Apache làm máy chủ.
  • Các trang báo lỗi
Trong quá trình làm việc với client, nếu có lỗi xảy ra (vi dụ như không tìm thấy file) 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 file .htaccess bạn thêm dòng sau:
ErrorDocument errornumber /file.html
Trong đó errornumber 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 (request bị sai)
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 file.html là trang web mà ban muốn hiện thị khi lỗi phát sinh. Ví dụ:
ErrorDocument 404 /notfound.html
hoặc:
ErrorDocument 500 /errorpages/500.html
Trang báo lỗi 404 của k49c.net cũng được làm theo cách này
  • Không cho hiện danh sách file trong thư mục
Đôi khi bạn gặp phải trường hợp server không tìm thấy file mặc định : index.html,index.htm,index.php,... khi bạn truy cập vào server sẽ hiển thị tất cả các file của thư mục.Để tránh tình trạng này , bạn thêm lệnh sau vào .htaccess:
Options -Indexes
  • Chỉ định các IP được/không được truy cập vào trang web
Chức năng này khi mua host hoặc thuê cpanel có cung cấp sẵn,nhưng mình sẽ hướng dẫn cách server thực hiện việc này bạn
Thêm lệnh sau:
deny from 203.239.110.2
để cấm ip 203.239.110.2 hoặc
allow from 203.239.110.20
để cho phép ip 203.239.110.20. Nếu bạn chỉ viêt ip dưới dạng
203.239.110 thì sẽ cấm/cho phép tất cả ip trong giải từ 203.239.110.1 đến 203.239.110.254.
Còn:
deny from all
sẽ cấm tất cả mọi truy cập đến các trang web trong thư mục, tuy nhiên các file trong đó vẫn có thể được sử dụng từ bên ngoài thông qua các dang require hay include.
  • Thay thế trang index
Dùng dòng lệnh sau:
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 file đượ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.
  • Redirection
Có thể redirect truy cập từ xa một cách đơn giản bằng lệnh sau:
Redirect /location/from/root/file.ext http://www.k49c.net/new/file/location.xyz
hoặc
Redirect /olddirectory http://www.k49c.net/newdirectory
  • Bảo vệ thư mục bằng password
Trong file .htaccess có thể viết thêm:
AuthUserFile /mnt/web/guide/somewhere/somepath/.htpasswd
AuthGroupFile /dev/null
AuthName Somewhere.com's Secret Section
AuthType Basic

require valid-user

Trong đó quan trọng nhất là file .htpassword, có dạng như sau:
username:v3l0KWx6v8mQM
bob:x4DtaLTqsElC2
với phần trước là tên user, phần sau là password đã được mã hoá bằng DES (có thể dùng john để giải mã ). Bạn có thể tạo ra file .htpasswd này bằng một công cụ có sẵn trong *nix là trình htpasswd, ví dụ:
root@vnofear$htpasswd -c .htpasswd username
Adding password for username.
New password:
password
Re-type new password:
password
xem man htpasswd để biết thêm chi tiết. Khi truy cập vào thư mục được bảo vệ bởi .htpasswd, browser sẽ hiện ra một cửa sổ yêu cầu bạn nhập username và password.
Lưu ý trước khi sử dụng .htaccess bạn nhớ kiểm tra xem host server có hỗ trợ .htaccess hay không.
tổng hợp thêm 1 số command nữa :
1. 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ẻ để 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:

Mã lệnh
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:

Mã lệnh
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
2. 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):

Mã lệnh
ErrorDocument 403 /error_forbidden.htm
ErrorDocument 404 /error_notfound.htm

Trong đó các trang error_forbidden.htm và error_notfound.htm bạn có thể ghi gì tuỳ ý.
3. 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

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

4. 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

Mã lệnh
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
5. 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
5.1. 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ố:

Mã lệnh
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.
5.2. Cấm một số ip truy cập

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

Mã lệnh
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
Tổng Hợp

Không có nhận xét nào:

Đăng nhận xét