Cách cấu hình và sử dụng file .htaccess trong Apache Web Server

Cách cấu hình và sử dụng file .htaccess trong Apache Web Server

Tệp .htaccess là một công cụ mạnh mẽ được sử dụng trên máy chủ web Apache để tùy chỉnh cấu hình website mà không cần chỉnh sửa trực tiếp các tệp cấu hình của máy chủ. Tên tệp bắt đầu bằng dấu chấm (.) để biểu thị rằng nó là một tệp ẩn trong hệ thống. Với .htaccess, bạn có thể thiết lập các trang lỗi tùy chỉnh (chẳng hạn như trang 404), thực hiện chuyển hướng URL, bảo vệ thư mục bằng mật khẩu, và nhiều tính năng quan trọng khác nhằm cải thiện hiệu suất và bảo mật website.

DataOnline sẽ hướng dẫn bạn cách tìm hiểu kích hoạt, tạo và sử dụng tệp .htaccess một cách hiệu quả. Ngoài ra, bài viết cũng sẽ đề cập đến các ứng dụng phổ biến của .htaccess và tác động của nó đối với hiệu suất và bảo mật website của bạn.

Yêu Cầu

Nếu bạn muốn thực hành sử dụng tập tin .htaccess theo các ví dụ trong bài hướng dẫn này, bạn cần:

  • Một máy chủ Ubuntu 20.04 đã được cài đặt với người dùng không phải root có quyền sudo và đã kích hoạt tường lửa. Bạn có thể thực hiện theo hướng dẫn thiết lập máy chủ ban đầu cho Ubuntu 20.04.
  • Máy chủ web Apache đã được cài đặt trên máy chủ Ubuntu của bạn. Hãy làm theo hướng dẫn của chúng tôi về Cách Cài Đặt Máy Chủ Web Apache trên Ubuntu 20.04. Chú ý hoàn thành bước 5 và tạo tập tin Virtual Host cho tên miền của bạn. Trong bài hướng dẫn này, chúng tôi sẽ sử dụng your_domain làm ví dụ và tập tin Virtual Host nằm tại /etc/apache2/sites-available/your_domain.conf.
  • Nếu bạn muốn thực hành với một tên miền (tùy chọn), bạn có thể thiết lập bằng cách mua tên miền từ Namecheap, đăng ký miễn phí tại Freenom, hoặc sử dụng nhà đăng ký tên miền bạn ưa thích. Bạn cũng cần thiết lập hai bản ghi DNS cho máy chủ của mình:
    • Hai bản ghi A, một cho your_domain và một cho www.your_domain trỏ đến địa chỉ IP công cộng của máy chủ. Tham khảo phần giới thiệu về DNS của DataOnline để biết thêm chi tiết về cách thêm các bản ghi này.
  • Nếu bạn cũng muốn bảo mật Virtual Host của mình, bạn có thể làm điều đó với chứng chỉ miễn phí đáng tin cậy, như hướng dẫn của chúng tôi về Cách Sử Dụng Let’s Encrypt cho Apache. Tuy nhiên, nếu bạn không có tên miền, bạn có thể sử dụng chứng chỉ tự ký thay thế. Chứng chỉ này cung cấp cùng loại mã hóa, nhưng không có xác thực tên miền. Hãy theo dõi hướng dẫn Cách Tạo Chứng Chỉ SSL Tự Ký cho Apache của chúng tôi để thiết lập.

Sau khi đã hoàn tất quá trình thiết lập, bạn có thể thực hành kích hoạt và tạo tập tin .htaccess trong các bước tiếp theo.

Kích hoạt tập tin .htaccess

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

Bắt đầu bằng cách mở tập tin Virtual Host apache2/sites-available/your_domain.conf bằng trình soạn thảo văn bản ưa thích của bạn. Ở đây, chúng tôi sử dụng nano:

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

Giả sử bạn đã làm theo bước 5 của hướng dẫn cài đặt Apache, tập tin này sẽ có nội dung như sau:

/etc/apache2/sites-available/your_domain.conf
    
<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>

Tiếp theo, thêm khối nội dung Directory vào bên trong khối VirtualHost:

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

<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 nội dung Directory này là AllowOverride All, cho phép sử dụng các tập tin .htaccess. Sau khi thêm thông tin này, hãy lưu và đóng tập tin. Nếu bạn dùng nano, nhấn CTRL + X rồi nhấn Y và ENTER.

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

sudo service apache2 restart

Giờ đây, các cài đặt cấu hình của bạn đã được cập nhật cho phép sử dụng tập tin .htaccess. Trong bước tiếp theo, bạn sẽ tạo tập tin này.

Tạo tập tin .htaccess

Để tạo một tập tin .htaccess qua terminal, bạn cần chuyển đến thư mục gốc của website. Thư mục gốc của website là nơi bạn đặt tập tin .htaccess để các cấu hình của nó được thực thi chính xác trên website của bạn. Vị trí đặt tập tin .htaccess rất quan trọng vì các cấu hình trong tập tin này ảnh hưởng đến tất cả các tập tin trong thư mục đó và các thư mục con. Điều này có nghĩa là nếu bạn phục vụ nhiều website khác nhau trên cùng một máy chủ Apache, tập tin .htaccess của mỗi website nên được đặt trong thư mục gốc riêng của website đó.

Nếu bạn đã làm theo yêu cầu tiền quyết, thư mục gốc website của bạn sẽ nằm ở vị trí sau:/var/www/your_domain/.htaccess Để tạo tập tin .htaccess cho website của bạn, chạy lệnh sau:

sudo nano /var/www/your_domain/.htaccess

Giờ đây, sau khi đã học một vài cách tạo tập tin .htaccess, chúng ta sẽ xem qua một số ứng dụng phổ biến của trang .htaccess.

Ứng dụng phổ biến của tập tin .htaccess

Có năm ứng dụng phổ biến cho trang .htaccess trên website của bạn:

1. Mod_Rewrite

Một trong những tính năng hữu ích nhất của tập tin .htaccess là mod_rewrite. Bạn có thể dùng tập tin .htaccess để chỉ định và thay đổi cách hiển thị URL và trang web cho người dùng.

2. Xác thực

Để thiết lập xác thực bảo mật bằng .htaccess, bạn có thể tạo một tập tin mật khẩu gọi là .htpasswd để xác thực người dùng. Thay đổi này sẽ tạo ra một cổng xác thực mật khẩu yêu cầu khách truy cập website nhập mật khẩu nếu họ muốn truy cập các phần nhất định của trang. Khi tạo tập tin này, hãy đảm bảo lưu nó ở một vị trí khác ngoài thư mục web vì lý do bảo mật.

Để tạo tập tin, chạy lệnh htpasswd kèm theo tham số -c và tên người dùng để tạo tập tin htpasswd. Sau đó, bạn sẽ được yêu cầu nhập mật khẩu. Bạn có thể thêm nhiều dòng vào tập tin .htpasswd; chỉ cần đảm bảo mỗi người dùng có một dòng riêng biệt. Ví dụ sau minh họa cách tạo một mục mới cho người dùng sammy:

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

Bạn có thể kiểm tra nội dung của tệp này 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 đã được mã hóa cho mỗi tài khoản mà bạn đã thêm.

Sau khi bạn đã thêm các người dùng mong muốn, tiếp theo hãy mở tệp .htaccess. Nếu bạn đã làm theo hướng dẫn trong phần yêu cầu trước đó, tệp này sẽ nằm ở vị trí sau:

sudo nano /var/www/your_domain/.htaccess

Lưu ý rằng trong ví dụ này, chúng tôi đang hạn chế toàn bộ thư mục gốc dựa trên /var/www/your_domain, nhưng bạn có thể đặt nó ở bất kỳ thư mục nào bạn muốn hạn chế truy cập.

Sau khi mở tập tin, thêm các nội dung sau và lưu lại để kích hoạt chức năng xác thực mật khẩu:

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

3. Trang lỗi tùy chỉnh

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

  • 400 Bad Request
  • 401 Authorization Required
  • 403 Forbidden Page
  • 404 File not Found
  • 500 Internal Error

Để tạo một trang thân thiện với người dùng và cung cấp thêm thông tin so với trang lỗi mặc định của máy chủ, bạn có thể sử dụng tập tin .htaccess để tạo trang lỗi tùy chỉnh. Tìm hiểu thêm trong bài hướng dẫn của chúng tôi về Cách Cấu Hình Apache Sử Dụng Trang Lỗi Tùy Chỉnh.

4. MIME Types

Trong trường hợp website của bạn có một số tập tin ứng dụng mà máy chủ chưa được cấu hình để truyền tải, bạn có thể thêm các kiểu MIME (Multipurpose Internet Mail Extensions) vào máy chủ Apache trong tập tin .htaccess với mã sau:

/var/www/your_domain/.htaccess
AddType audio/mp4a-latm .m4a

Hãy đảm bảo thay thế loại ứng dụng và phần mở rộng tập tin bằng kiểu MIME bạn muốn hỗ trợ. Trong ví dụ này, chúng tôi chỉ định kiểu MIME cho tập tin âm thanh.

5. SSI

Server Side Includes (SSI) là một trợ thủ đắc lực trên website. Một trong những ứng dụng phổ biến của SSI là cập nhật một số lượng lớn trang với dữ liệu cụ thể mà không cần phải cập nhật từng trang riêng lẻ. Ví dụ, nếu bạn muốn thay đổi một câu trích dẫn ở cuối trang.

Để kích hoạt SSI, chèn đoạn mã sau vào tập tin .htaccess:

/var/www/your_domain/.htaccess
AddType text/html .shtml
AddHandler server-parsed .shtml</pre>

Hai dòng này báo cho Apache rằng các tập tin .shtml là hợp lệ, với dòng thứ hai chỉ định máy chủ phân tích tất cả các tập tin kết thúc bằng .shtml để tìm kiếm bất kỳ lệnh SSI nào.

Tuy nhiên, nếu bạn có nhiều trang .html mà không muốn đổi phần mở rộng sang .shtml, bạn có thể sử dụng chiến thuật XBitHack. Bạn có thể thêm dòng sau vào tập tin .htaccess để yêu cầu Apache kiểm tra tất cả các tập tin .html với các quyền thích hợp cho SSI:

/var/www/your_domain/.htaccess

/var/www/your_domain/.htaccess
XBitHack on

Để biến một trang trở thành đối tượng của XBitHack, sử dụng lệnh chmod để thay đổi quyền:

chmod +x pagename.html

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

Mặc dù tập tin .htaccess có thể được dùng để cải thiện website, nhưng có hai khía cạnh bạn cần lưu ý: tốc độ và bảo mật.

Về tốc độ, tập tin .htaccess có thể làm chậm máy chủ của bạn, nhưng đối với hầu hết các máy chủ, sự thay đổi này có thể không nhận ra được. Điều này là do vị trí của tập tin; vì .htaccess ảnh hưởng đến các trang trong thư mục của nó và tất cả các thư mục con. Mỗi khi một trang được tải, máy chủ sẽ quét thư mục hiện tại và tất cả các thư mục phía trên cho đến khi gặp tập tin .htaccess hoặc thư mục gốc. Quá trình này sẽ xảy ra miễn là chỉ thị AllowOverride cho phép sử dụng tập tin .htaccess, dù tập tin đó có tồn tại hay không.

Về bảo mật, tập tin .htaccess dễ truy cập hơn so với cấu hình Apache tiêu chuẩn và các thay đổi được thực hiện ngay lập tức (không cần phải khởi động lại máy chủ). Điều này cho phép người dùng có quyền thay đổi tập tin .htaccess, từ đó kiểm soát máy chủ một cách mạnh mẽ. Bất kỳ chỉ thị nào được đặt trong tập tin .htaccess đều có tác dụng như khi chúng được đặt trực tiếp trong cấu hình Apache. Tuy nhiên, cũng cần lưu ý rằng Apache thường khuyến nghị không sử dụng .htaccess nếu người dùng có quyền truy cập trực tiếp vào các tập tin cấu hình của Apache.

Kết Luận

Tập tin .htaccess mang lại cho bạn rất nhiều sự linh hoạt trong việc xây dựng và quản lý website. Để tìm hiểu thêm về cách bảo mật website của bạn, hãy đọc bài hướng dẫn của chúng tôi về việc thiết lập xác thực mật khẩu với Apache. Bạn cũng có thể tìm hiểu thêm trong bài hướng dẫn về cài đặt máy chủ web Apache và các tập tin cùng thư mục quan trọng của Apache.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *