.htaccess là gì?

Một cách ngắn gọn để trả lời cho câu hỏi .htaccess là gì, đơn giản nó chỉ là một cái tập tin văn bản như đúng với tên gọi hypertex access. Tập tin này sẽ được đọc bởi máy chủ web Apache. Nội dung của nó được viết như thế nào, thì Apache sẽ làm theo như vậy.

Tại sao cần .htaccess

Về cơ bản, máy chủ web Apache nhận xử lý các gói tin http request và trả lời lại bằng các gói tin http response. Apache là một phần mềm tương đối phức tạp với nhiều chức năng và nhiều cách tùy biến. Bạn muốn nó hoạt động như thế nào, thì bạn phải nói cho nó hiểu. Để nó hiểu, bạn cần nói ngôn ngữ của nó, là các chỉ thị (directive). Các chỉ thị này sẽ được đặt trong một tập tin văn bản, gọi là tập tin cấu hình (configuration file), tên tập tin là httpd.conf (hoặc là apache2.conf trên ubuntu).

Tập tin httpd.conf là bộ não của Apache. Nội dung của nó quyết định cách thức hoạt động của Apache. Nó phải được bảo vệ tuyệt đối an toàn. Dĩ nhiên người quản trị không bao giờ muốn chia sẻ nội dung, quyền truy cập tập tin httpd.conf cho bất cứ ai.

Câu hỏi đặt ra, trên cùng một máy chủ, Apache phục vụ nhiều website khác nhau (như dịch vụ cho thuê hosting chẳng hạn), những webiste lại chạy trên nhiều nền tảng khác nhau (php wordpress, php joomla, python, java….). Dĩ nhiên mã nguồn mỗi website này sẽ được đặt vào các thư mục riêng biệt. Và mỗi website đó lại có những nhu cầu tinh chỉnh riêng, đều cần tác động vào httpd.conf

./htaccess ra đời là để giải quyết bài toán cho phép tác động gián tiếp lên httpd.conf mà không cần phải chia sẻ tập tin này.

Ví dụ có 02 website là ithgo1.com (được đặt tại /usr/share/wordpress và ithgo2.com (đặt tại /var/www/html). Ý tưởng là tại thư mục của mỗi website sẽ đặt một file .htaccess để phục vụ riêng cho mỗi nơi. Vậy là chúng ta đã đảm bảo được tính toàn vẹn và tính bảo mật cho httpd.conf nhờ dùng .htaccess

Khi nào nên dùng .htaccess, khi nào không?

Khi bạn có toàn quyền với httpd.conf thì không cần (nên tránh) sử dụng .htaccess, bởi .htaccess sẽ làm chậm Apache. Bằng cách bạn đặt trực tiếp các chỉ thị <Directory> vào httpd.conf thì Apache có hiệu năng tốt hơn.

Ngược lại, khi bạn không có toàn quyền, hoặc không muốn chia sẻ httpd.conf thì bạn hãy dùng .htaccess

Bạn muốn đổi tên .htaccess có được không?

Dĩ nhiên là được, bởi thực ra cái tên .htaccess là một giá trị của chỉ thị <Accessfilename> trong httpd.conf mà thôi. Nếu bạn muốn đổi nó thành tên .ghetcaitenhtaccess thì bạn sẽ sửa lại giá trị của chỉ thị này:

AccessFileName ".ghetcaitenhtaccess"

Các ứng dụng thường thấy của .htaccess

  • Thay đổi URL tùy theo ý bạn
  • Tạo 1 trang xác thực truy cập
  • Tạo 1 trang trả về thông báo lỗi tùy theo ý bạn (như các lỗi 403, 404, 500…)
  • Mime types
  • SSI (service side includes)
  • v.v…

Kết luận

Qua bài viết này, bạn đã có thể mường tượng được về .htaccess là gì, để làm gì, tại sao cần nó, một số ứng dụng thường thấy của nó. Để hiểu tường tận hơn, bạn nên tham khảo bài viết về .htaccess trên trang chính thức Apache.org.

Leave a Comment