Trang chủHướng dẫnHướng dẫn tạo và cấu hình file .htaccess trong Apache chi tiết
Networking

Hướng dẫn tạo và cấu hình file .htaccess trong Apache chi tiết

CyStack blog 7 phút để đọc
CyStack blog07/07/2025
Locker Avatar

Chris Pham

Technical Writer

Locker logo social
Reading Time: 7 minutes

Các web server Apache dùng file .htaccess để tùy chỉnh chi tiết website mà không cần sửa đổi các file cấu hình chính của server. Tên file này bắt đầu bằng một dấu chấm, đồng nghĩa nó là một file ẩn.

Tạo và cấu hình file .htaccess trong Apache

File .htaccess có thể được dùng để load các trang lỗi tùy chỉnh (như trang 404), chuyển hướng URL, thiết lập xác thực bằng mật khẩu cho các thư mục cụ thể trên server, và nhiều công dụng khác.

Trong bài hướng dẫn này, chúng ta sẽ tìm hiểu cách kích hoạt, tạo và sử dụng file .htaccess, cũng như một số công dụng phổ biến và những ảnh hưởng của nó đến tốc độ và bảo mật của server.

Chuẩn bị

Để có thể thực hành sử dụng file .htaccess qua các ví dụ trong bài này, bạn sẽ cần:

  • Một server Ubuntu 20.04 đã kích hoạt firewall với một user thường có quyền sudo.
  • Cài đặt web server Apache trên server Ubuntu trên. Đảm bảo bạn đã có sẵn file virtual host (máy chủ ảo) cho domain của mình. Trong bài này, ta sẽ sử dụng your_domain làm ví dụ xuyên suốt và file virtual host sẽ là your_domain.conf.
  • Nếu muốn thực hành với domain thật (không bắt buộc), bạn có thể mua chúng trên Namecheap, nhận miễn phí từ Freenom, hoặc sử dụng một nhà cung cấp tên miền nào khác tùy chọn. Bạn cũng sẽ cần thiết lập cả hai record (bản ghi) DNS sau cho server: hai record A, một với your_domain và một với www.your_domain. Chúng phải cùng trỏ đến địa chỉ IP công khai của server.
  • Nếu muốn bảo mật virtual host của mình, bạn có thể sử dụng trusted certificate (chứng chỉ tin cậy) miễn phí từ Let’s Encrypt. Tuy nhiên, nếu không có domain, bạn có thể dùng chứng chỉ tự ký (self-signed certificate). Loại chứng chỉ này cũng cung cấp cơ cấu mã hóa tương tự nhưng chúng không có xác thực domain.

Sau khi hoàn tất các bước chuẩn bị này, hãy bắt đầu học cách kích hoạt và tạo file .htaccess trong các phần tiếp theo.

Kích hoạt file .htaccess

Nếu có quyền truy cập vào cấu hình server, bạn có thể chỉnh sửa file cấu hình của Apache để cho phép file .htaccess ghi đè các cấu hình website mặc định.

Đầu tiên, hãy mở file virtual host your_domain.conf bằng editor yêu thích của bạn. Trong ví dụ này, ta sẽ dùng nano:

sudo nano /etc/apache2/sites-available/your_domain.conf

Nếu bạn đã cài đặt Apache cho domain của mình, file này sẽ có nội dung như sau:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName your_domain
    ServerAlias www.your_domain
    DocumentRoot /var/www/your_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Hãy thêm khối <Directory> sau vào bên trong khối <VirtualHost>:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName your_domain
    ServerAlias www.your_domain
    DocumentRoot /var/www/your_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

<Directory /var/www/your_domain>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
</Directory> 
</VirtualHost>

Dòng quan trọng nhất trong khối <Directory> này là AllowOverride All. Nó có tác dụng cho phép sử dụng file .htaccess. Sau khi thêm xong, hãy lưu và đóng file. Nếu dùng nano, bạn có thể thực hiện bằng cách nhấn CTRL + X, rồi YENTER.

Tiếp theo, khởi động lại Apache:

sudo service apache2 restart

Tạo file .htaccess

Để làm điều này trong terminal, bạn cần di chuyển đến thư mục gốc web (web root directory) của mình. Đây là nơi bạn nên đặt file .htaccess để cho các cấu hình trong đó được áp dụng đúng cho website.

Vị trí này rất quan trọng, vì các cấu hình trong đó sẽ ảnh hưởng đến tất cả nội dung trong thư mục chứa nó, kể cả các thư mục con bên trong. Do đó, nếu bạn host nhiều website khác nhau trên cùng một server Apache, mỗi file .htaccess nên được đặt trong thư mục gốc web riêng của từng website.

Nếu bạn đã làm theo các bước chuẩn bị, thư mục gốc web của bạn sẽ là /var/www/your_domain. Để tạo file .htaccess cho website, hãy chạy lệnh sau:

sudo nano /var/www/your_domain/.htaccess

Tiếp theo, tiếp theo chúng ta sẽ tìm hiểu một số công dụng phổ biến của file này.

Các công dụng phổ biến của file .htaccess

Có năm công dụng phổ biến của file .htaccess cho website của bạn:

Mod_Rewrite

Một trong những tính năng hữu ích nhất của file .htaccessMod_Rewrite. Bạn có thể dùng file này để tùy chỉnh cách các URL và trang web hiển thị với người dùng.

Xác thực

Bạn có thể tạo một file mật khẩu tên là .htpasswd cùng với .htaccess để xác thực người dùng. Nó sẽ kích hoạt một cổng xác thực và nhắc người dùng nhập mật khẩu nếu họ muốn truy cập vào các phần nhất định của website. Vì lý do bảo mật, khi tạo file này, hãy đảm bảo lưu nó ở một vị trí khác ngoài thư mục web.

Để tạo file này, hãy chạy lệnh htpasswd với tùy chọn -c, theo sau là đường dẫn đến file .htpasswd mong muốn và tên người dùng. Sau đó, nhập mật khẩu khi được yêu cầu.

Bạn có thể thêm nhiều người dùng vào file .htpasswd nếu cần, chỉ cần mỗi user nằm riêng ở một dòng. Ví dụ sau minh họa cách tạo một mục mới trong file cho người dùng có tên là sammy:

sudo htpasswd -c /etc/apache2/.htpasswd sammy

Bạn có thể kiểm tra nội dung của file trên bằng cách chạy lệnh cat /etc/apache2/.htpasswd. Lệnh này sẽ hiển thị tên người dùng và mật khẩu đã mã hóa cho mỗi tài khoản đã thêm.

Sau khi đã thêm các người dùng mong muốn, tiếp theo hãy mở file .htaccess đã tạo ở bước trên:

sudo nano /var/www/your_domain/.htaccess

Lưu ý rằng trong ví dụ này, chúng ta đang giới hạn quyền truy cập vào toàn bộ thư mục gốc (document root) của /var/www/your_domain. Bạn có thể đặt cấu hình này trong bất kỳ thư mục nào muốn hạn chế truy cập.

Sau khi mở file, hãy thêm nội dung sau và lưu lại để kích hoạt chức năng bảo vệ bằng mật khẩu:

AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user

Tạo các trang lỗi tùy chỉnh

File .htaccess cũng cho phép bạn tạo các trang lỗi tùy chỉnh cho website của bạn. Một số lỗi phổ biến nhất bao gồm:

  • 400 Bad Request (Yêu cầu không hợp lệ)
  • 401 Authorization Required (Yêu cầu xác thực)
  • 403 Forbidden Page (Trang bị cấm truy cập)
  • 404 File not Found (Không tìm thấy file)
  • 500 Internal Server Error (Lỗi máy chủ nội bộ)

Để trang web cung cấp nhiều thông tin hữu ích cho người truy cập hơn là các trang báo lỗi mặc định của server, bạn có thể dùng file .htaccess để tùy chỉnh chúng.

Kiểu MIME

Trong trường hợp website của bạn chứa một số loại file mà server chưa có khả năng phục vụ, bạn có thể thêm các kiểu MIME (Multipurpose Internet Mail Extensions, hay là kiểu phương tiện) vào server Apache thông qua file .htaccess bằng đoạn sau:

AddType audio/mp4a-latm .m4a

Hãy nhớ thay thế kiểu ứng dụng và phần mở rộng file cho phù hợp với kiểu MIME bạn muốn hỗ trợ. Trong ví dụ trên, chúng ta đã chỉ định một kiểu MIME cho file âm thanh.

SSI

SSI (Server Side Includes, các mã chèn từ phía server) là một công cụ có thể giúp bạn tiết kiệm rất nhiều thời gian khi quản lý website. Một trong những ứng dụng phổ biến nhất của SSI là cập nhật dữ liệu chung cho hàng loạt trang mà không cần phải sửa đổi từng trang riêng lẻ. Một ví dụ điển hình là việc thay đổi một câu trích dẫn ở cuối mỗi trang.

Để kích hoạt SSI, hãy thêm đoạn sau vào file .htaccess:

AddType text/html .shtml
AddHandler server-parsed .shtml</pre>

Các dòng này khai báo với Apache rằng các file .shtml được chấp nhận hợp lệ. Trong đó dòng thứ hai yêu cầu server quét tất cả các file có đuôi .shtml để tìm và thực thi các lệnh SSI.

Tuy nhiên, nếu có nhiều trang HTML mà bạn không muốn đổi đuôi thành .shtml, bạn có thể dùng một kỹ thuật khác là XBitHack để làm server vẫn xử lý các lệnh SSI trong đó.

Để sử dụng cách này, hãy thêm dòng sau vào file .htaccess để Apache kiểm tra và xử lý SSI cho tất cả các file .html có quyền phù hợp cho XBitHack:

XBitHack on

Để cho phép một trang HTML sử dụng XBitHack, hãy dùng lệnh chmod để cấp quyền thực thi cho file đó:

chmod +x pagename.html

Tốc độ và bảo mật với file .htaccess

Mặc dù file .htaccess có thể thêm một tính năng của một website, có hai khía cạnh quan trọng khác mà ta phải lưu tâm là tốc độ và bảo mật.

Về mặt hiệu năng, file .htaccess có thể làm chậm server của bạn. Tuy nhiên với hầu hết các server, sự sụt giảm hiệu năng này thường không đáng kể. Lý do là vì mỗi khi có một request gửi đến trang web, server Apache sẽ phải kiểm tra thư mục chứa trang đó và tất cả các thư mục cha của nó (theo hướng lên trên) để tìm và áp dụng các chỉ thị từ file .htaccess.

Quá trình này lặp lại cho đến thư mục gốc của website hoặc tới khi mà AllowOverride không còn cho phép, ngay cả khi các file .htaccess đó không tồn tại.

Về mặt bảo mật, ta dễ truy cập và sửa đổi file .htaccess hơn so với file cấu hình chính của Apache. Các thay đổi trong đó cũng có hiệu lực ngay lập tức mà không cần khởi động lại server. Việc cho phép người dùng sửa đổi file .htaccess, đồng nghĩa với việc trao cho họ quyền kiểm soát đáng kể đối với hoạt động của server.

Mọi chỉ thị đặt trong file .htaccess đều có hiệu lực tương tự như khi chúng được đặt trong file cấu hình chính của Apache. Do đó, chính phía Apache cũng thường khuyến cáo rằng, nếu bạn có quyền truy cập vào file cấu hình server chính, hãy nên đặt các cấu hình của bạn ở đó thay vì sử dụng file .htaccess.

Kết luận

File .htaccess cung cấp nhiều tùy chọn linh hoạt để bạn cấu hình và xây dựng website của mình. Để tìm hiểu sâu hơn về cách bảo mật website, bạn có thể tham khảo bài các hướng dẫn về thiết lập xác thực mật khẩu với Apache của chúng tôi. Ngoài ra, bạn cũng nên tìm đọc thêm các bài hướng dẫn cài đặt web server Apache và các file và thư mục quan trọng trong Apache.

0 Bình luận

Đăng nhập để thảo luận

Chuyên mục Hướng dẫn

Tổng hợp các bài viết hướng dẫn, nghiên cứu và phân tích chi tiết về kỹ thuật, các xu hướng công nghệ mới nhất dành cho lập trình viên.

Đăng ký nhận bản tin của chúng tôi

Hãy trở thành người nhận được các nội dung hữu ích của CyStack sớm nhất

Xem chính sách của chúng tôi Chính sách bảo mật.

Đăng ký nhận Newsletter

Nhận các nội dung hữu ích mới nhất