Htaccess và các vấn đề liên quan

Post on: 2018-08-10 23:46:43 | in: Server
Thông thường để cấu hình cho Server Linux thì ta phải có kiến thức về quản trị mạng Linux, điều này đôi khi gây khó khăn cho các lập trình viên. Vậy có cách nào khắc phục vấn đề này mà không cần

Ở Server có một file đặc biệt tên là .htaccess, file này có nhiệm vụ khai báo cấu hình cho các folder kể từ folder mà nó đang đứng. Ví dụ bạn đang ở folder sources/.htaccess thì tất cả các folder con của folder sources cũng bị ảnh hưởng bởi file này. Bạn có thể khai báo cấm người dùng truy cập vào folder, đặt mật khẩu cho folder, và đặc biệt hơn nữa đó là quản lý đường dẫn như rewrite URL, redirect URL. Đó là đối với Linux, còn đối với Window thì file này sẽ có tên là web.config và tác dụng của nó cũng tương tự, tuy nhiên về cú pháp sử dụng thì hai file .htaccess và web.config sẽ khác nhau.

File .htaccess sử dụng cú pháp của Regular Expression nên để sử dụng thành thạo thì bắt buộc ban phải biết các quy tắc căn bản trong RegExp, bạn không cần phải biết sâu mà chỉ cần biết các cú pháp RegExp căn bản là được. Ngoài ra nó còn có cú pháp riêng mà ban phải học thuộc để biết mà điều hướng đúng cách.

Như vậy công dụng của file .htaccess trong một project PHP là giúp khai báo cấu hình cho project đó như viết lại đường dẫn, bảo mật file, đặt mật khẩu cho file, bật cache client để tối ưu hóa tốc độ cho website. Và trong bài viết này sẽ tổng hợp tất cả các vấn đề này.

Nội dung chính

  1. File htaccess là gì ?
  2. Kiểm soát và bảo mật website với htaccess
  3. Những ký hiệu thường dùng của htaccess

1. htaccess là gì ?

File htaccess là một tập tin dùng để cấu hình máy chủ web apache. Nó được máy chủ chấp nhận như là một thành phần và cho phép chúng ta thực hiện điều hướng và bật các tính năng một cách linh hoạt hoặc bảo vệ một phần (folder) nào đó của trang web.

Trong cái tên .htaccess thì htaccess là phần đuôi và tập tin này là không có tên (noname), chính vì thế khi bạn đưa file này lên host không phải lúc nào nó cũng hiển thị ra. Nên không phải lúc nào bạn cũng có thể thấy file .htaccess được.

File .htaccess không được viết nên từ một ngôn ngữ lập trình nào, nó được viết bởi những quy tắc Regular Expression nên nếu bạn không nắm vững kiến thức này thì thao tác với file .htaccess rất khó khăn. Và nếu bạn chỉnh sửa file với một lỗi dù chỉ là nhỏ thì khi truy cập vào website của bạn sẽ xuất hiện lỗi 500, như vậy là bạn đã HACK được web mình rồi đấy. Vì thế hãy thận trọng khi chỉnh sửa file .htaccess và hãy luôn luôn có một file backup trước khi chỉnh sửa nó.

Có thể sử dụng file .htaccess để viết lại đường dẫn, bảo vệ thư mục và file, bật chức năng cache và gzip giúp tốc độ trang web được cải thiện hơn. Và còn nhiều điều tính năng khác nữa.

2. Bảo mật website với htaccess

2.1. Bật chức năng Rewrite

Để bật chức năng rewrite này ta chỉ cần thêm một đoạn code nhỏ lên đầu file .htacess như sau:

RewriteEngine on

2.2. Xử lý Chuyển hướng lỗi

RewriteEngine on
ErrorDocument 404 http://www.example.com/404.html

Đoạn code trên từ khóa ErrorDocument có ý nghĩa là nếu url request bị lỗi thì xử lý chuyển hướng. Ở đây lỗi có hiệu lực là 404 và link chuyển hướng là http://www.example.com/404.html.

Ví dụ trên tôi đã dùng một địa chỉ đầy đủ (tức là địa chỉ có full url) nhưng nếu ta để ở dạng local thì hay hơn.

ErrorDocument 401 /errir_401.html
ErrorDocument 403 / errir_403.html
ErrorDocument 404 / errir_404.html
ErrorDocument 400 / errir_400.html

Các con số lỗi trên có ý nghĩa như sau:

  • 404 - Not Found
  • 401/403 - Unauthorized/Forbidden
  • 400 - Bad Request
  • 500 - Internal Server Error

Và còn rất nhiêu lỗi khác tôi không thể liệt kê hết được. Nhưng chung quy thì lỗi 404 vẫn là lỗi thông dụng nhất nên các website hiện nay chủ yếu tập trung vào lỗi này.

2.3. Hiển thị trang index giả mạo

Nếu bạn vào một folder nào đó trong website mà không có file index.html thì lúc này tất cả các file hay folder đề bị thấy hết, điều này không tốt lắm vì lộ hết các files và folders. Giải quyết vấn đề này ta dùng file .htaccess với dòng lệnh sau

Options All -Indexes

Dòng lệnh này sẽ hiển thị một thông báo Forbidden thay vì hiển thị cấu trúc folder.

** 2.4. Thiết lập