Bài 03. Các ký hiệu đặc biệt trong file .htaccess

Htaccess 11/02/2017 06:41 1042
Htaccess không phải là một ngôn ngữ lập trình nào đó. Nó được viết bởi những quy tắc Regular Expression. Vì vậy để có thể hiểu và sử dụng được .htaccess, bạn cần biết ý nghĩa các kí hiệu đặc biệt trong .htaccess và các quy tắc cơ bản của Regualr Expression.

1. [] : 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.

Ví dụ:  [abc] => chỉ chấp nhận ký tự a hoặc b hoặc c

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

Ví du: [abc]+ => chỉ chấp nhận tập các ký tự được tạo ra bởi các ký tụ a hoặc b hoặc c có độ dài biến thiên.

3. [a-z] : Tìm tất cả các ký tự từ a-z, theo bảng chữ cái.

Ví dụ: [a-z] => Tất cả các ký tự theo bảng chữ cái. Có thể có thêm: [a-zA-Z].

4. a{n}: Xác định số ký tự sẽ mở rộng cùng với ký tự đầu.

Ví dụ: [0-9]{3} => Các số từ 0-9 có độ dài là 3 ký tự 000 hoặc 010 hoặc 020 ..vv

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

Ví dụ: [0-9]{3,} => Các số từ 0-9 có độ dài từ 3 trở nên 009 hoặc 0110 hoặc 0100 ..vv

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

Ví dụ: [0-9]{3,6} => Các số từ 0-9 có độ dài từ 3 tới 6: 001 hoặc 0100 hoặc 01000 hoặc 015424 ..vv

7.(): Gom nhóm các group Regular Exprsesion

Ví dụ: ([a-z])([A-Z]): Góm thành 2 nhóm

8.^ : Ký hiệu bắt đầu chuỗi regex.

Ví dụ: ^[a-z]: Bắt đầu phải bằng một ký tự a hoặc b ..vv

9.$: Ký hiệu kết thúc chuỗi regex.

Ví dụ: [a-z]$: Kết thúc phải bằng một ký tự a hoặc b ..vv

10.?: Xác định chiều dàu 0 hoặc 1 ký tự.

Ví du: [a-z]? : Chuỗi các ký tự chữ cái thường từ 0 đến 1 ký tự

11.+ : Xác đinh chiều dài từ một hoặc nhiều ký tự.

Ví dụ: [a-z]+: Chuỗi các ký tự chữ cái thường từ 1 ký tự trở lên

12.* : Xác đinh chiều dài từ 0 hoặc nhiều ký tự.

Ví dụ: [a-z]* => Chuỗi các ký tự chữ cái thường từ 0 ký tự trở lên

13.!: Ký hiệu phủ định, sẽ so khớp với tất cả thứ gì khác với các ký tự sau !

Ví du:!^$ => Khác rỗng hay không rỗng.

14..: Đại diện cho bất cứ ký tự đơn nào.

Ví dụ: .{1,3}: Các ký tự có độ dài từ 1-3 A,B,AB,AC ..vv

15.| : Đây là toán tử OR trong Regular Expression, có ý nghĩa A hoặc B

Ví dụ: (a|b) Chấp nhận ký tự là a hoặc là b 

16.\ : Đặt 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.

Ví dụ: \. => Sử dụng dấu . như là ký tự thường.

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

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

19.^.*$ : Được sử dụng để so khớp mọi thứ.

2. Các ký hiệu [Flags] của file htaccess

  • [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 rule kế tiếp.

  • [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 match không phân biệt hoa thường.

  • [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] - Toán tử kiểm tra từ trên xuống dưới, nếu điều kiện nào đúng thì dừng.

  • [NE] - No Escape: Chỉ định server xử lí các gói tin trả về mà không dùng kí tự thoát

  • [NS] - No Subrequest: Chỉ định server bỏ qua thư mục hiện hành nếu request nhắm vào thư mục con.

  • [QSA] - Append Query String: chỉ định server gắn chuỗi truy vấn vào cuối cùng của URL

  • [S=x] Skip: Chỉ định server bỏ qua không xem xét  x rules tiếp theo nữa nếu một rule đã được thực thi.

  • [T=MIME-type] - Khai báo định dạng files của server.

  • -d Kiểm tra thư mục có tồn tại hay không?

  • -f Kiểm tra file có tồn tại hay không

  • -s Kiểm tra giá trị của file có khác 0 hay không?

3. Mã thông báo lỗi trả về từ Server 

  • 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

4. Tổng kết

Mong rằng thông qua bài viết này các bạn sẽ nắm rõ các quy tắc Regular expression & các ký hiệu riêng của .htaccess thường được sử dụng trong quá trình viết .htaccess. Trong các bài tiếp theo chúng ta sẽ tìm hiểu làm sao để tạo một đường dẫn thân thiện cho website, loại bỏ www...

Xem Thêm

Profile photo of adminTheHalfHeart

B.V.T

Sinh ra và lớn nên ở Bắc Giang. Hiện tại thì tôi đang là một lập trình viên tại VietISO. Tôi lập website này với mục đích là bookmark những gì tôi đã đọc qua và mong muốn chia sẻ những gì tôi biết.