Hướng dẫn cơ bản về .htaccess và các chức năng

Htaccess là một tệp tin cấu hình đặc biệt, htaccess cho phép bạn thay đổi cách hoạt động của máy chủ Apache ở tầng thư mục.

I. .htaccess là gì ?

htaccess là một tệp tin cấu hình đặc biệt, htaccess cho phép bạn thay đổi cách hoạt động của máy chủ Apache ở tầng thư mục. Tệp tin htaccess gồm các dòng lệnh, có thể tùy biến theo người dùng, được đặt trong một thư mục nào đó và nó sẽ có tác dụng cho thư mục đó cũng như tất cả các thư mục con trong thư mục đó. Một trong những ứng dụng phổ biến của htaccess là cho phép viết lại đường dẫn URL

II. Các ký hiệu đặc biệt trong .htaccess.

Để có thể hiểu và sử dụng được .htaccess khách hàng cần biết ý nghĩa các kí hiệu đặc biệt trong .htaccess dưới đây :

[F]: Forbidden: Kí tự này dùng để chỉ định server sẽ trả về client trang lỗi 403 nếu truy cập vào những nơi không được phép

[L]: Last rule: kí tự này để ấn định rằng bước trước đã xong thì ngừng và không tiếp tục thực thi lệnh rewrite tiếp theo nữa.

[N]: Next: chỉ thị cho server tiếp tục rewrite cho đến khi tất cả các mục chỉ định được rewrite hoàn toàn.

[G]: Gone: Chỉ định server trả về client trang báo lỗi không tồn tại (no longer exit)

[P]: Proxy: chỉ định server điểu kiển các yêu cầu được ấn định bởi mod_proxy

[C]: Chain: Chỉ định server thực hiện rule hiện hành song song với rule trước đó

[R]: Redirect: chỉ định server đổi hướng request sang một trang khác trong trường hợp trình duyệt gởi yêu cầu duyệt một trang được sửa chữa đường dẫn (rewrite) trước đó.

[NC] No-case: Chỉ định server math nhưng kí tự tương tự nhau, ví dụ dòng lệnh sau:

RewriteCond %{HTTP_REFERER} !^http://domain.com/.*$ [NC]

Thì các từ  là domain.com hay Domain.com hay DoMain.com…đều được match.

[PT]:

Pass Through: có nghĩa là dùng kí tự để buộc "rewrite engine" ấn định bảng giá trị của uri trở thành giá trị của tên files

[OR]:

Đây có thể gọi là một toán tử, các biểu thức được nối tiếp nhau bằng toán tử OR, trong đó biểu thức nào đúng, sẽ là quy tắc để lệnh Rewrite áp dụng.

[T=MIME-type] : Mime Type cho phép website truy xuất nhiều định dạng file.

[] : xác định một tập các ký tự trong đó bất cứ ký tự nào có trong ngoặc xuất hiện sẽ được match.

[]+ : tập các ký tự trong đó bất cứ kết hợp nào với nó cũng được match.

[a-z] : match với tất cả các ký tự từ a-z, theo bảng chữ cái. Có thể có thêm: [a-zA-Z].

a{n} : xác định số ký tự sẽ mở rộng cùng với ký tự đầu, tức là khi match được ký tự đầu sẽ lấy thêm bao nhiêu ký tự tiếp theo. Ví dụ : x{3} sẽ lấy: x’s, xad, …

a{n,} : như a{n} nhưng có thể lấy 3 hoặc nhiều hơn.

a{n,m} : như a{n} nhưng sẽ lấy trong khoảng từ n tới m.

() : nhóm các ký tự lại với nhau, xem chúng như 1 đơn vị đơn lẻ.

^ : ghi chú bắt đầu chuỗi regex.

$ : ghi chú kết thúc chuỗi regex.

? : cho phép chọn lựa ký tự.Ví dụ: monzas? sẽ match với monza hoặc monzas.

: mô tả một phủ định, sẽ match với tất cả thứ gì khác với các ký tự sau !

: thể hiện cho bất cứ ký tự đơn nào.

+ : match với một hoặc nhiều ký tự.

: match với 0 hoặc nhiều ký tự.

| : phép hoặc logic.

\ : thêm vào trước các ký tự đặc biệt để có thể sử dụng chúng như các ký tự bình thường.

.* : không có ký tự nào hoặc nhiều ký tự bất kỳ.

^$ : định nghĩa một chuỗi rỗng.

^.*$ : sử dụng để match mọi thứ.

Một số mã lỗi :

401 - Authorization Required : Lỗi chưa được xác thực user và password

400 - Bad request : Lỗi truy cập không hợp lệ, do server không chấp nhận request, hoặc request thiếu một số yêu cầu nào đó.

403 - Forbidden : Lỗi truy cập vào trang bị cấm

500 - Internal Server Error : Lỗi do server

404 - Wrong page : Lỗi truy cập vào trang không tồn tại

301 - Moved Permanently: 302 - Moved Temporarily: Lỗi truy cập vào trang đã bị di chuyển

III. Tính năng cơ bản của .htaccess.

1.Chống ăn cắp tài nguyên và băng thông.

Tính năng này giúp khách hàng có thể chủ động trong việc chia sẻ tài liệu, hình ảnh trên các website khác, để tránh gây lãng phí băng thông có thể thêm phần sau vào file .htaccess :

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain.com/.*$ [NC]
RewriteRule .* - [F]

Khách hàng có thể thêm các trang web muốn chia sẻ tài liệu, hình ảnh hoặc chỉ cho mình trang web của khách hàng bằng cách thêm dòng RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain.com/.*$ [NC] và sửa “yourdomain.com” thành domain khách hàng muốn chia sẻ.

2.Chặn ip truy cập.

Khách hàng có thể tự cấu hình chặn các ip hoặc domain bằng cách thêm dòng sau vào file .htaccess :

<Limit GET POST PUT>
order allow,deny
allow from all
deny from x.y.z.v
deny from .*domain\.com.*
</Limit>

Khách hàng có thể tự thêm các ip hoặc domain muốn chặn bằng cách thêm dòng deny from x.y.z.v hoặc deny from .*domain\.com.* trong đó x.y.z.v là ip và domain.com là tên miền muốn chặn.

3.Cấu hình chuyển hướng trong .htaccess

Khách hàng có thể tự cấu hình chuyển bằng cách thêm các dòng sau vào file .htaccess :

Đối với việc chuyển hướng file khách hàng thêm như sau :

redirect 301 /old/old.htm http://yourdomain.com/new.htm

Ví dụ trên cho khách hàng chuyển hướng file old.htm nằm trong thư mục old tới đường dẫnhttp://yourdomain.com/new.htm với lỗi 301 là di chuyển vĩnh viễn.

Đối với việc chuyển toàn bộ website sang tên miền mới khách hàng thêm như sau :

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.net/$1 [L,R=301,NC]