Cách sử dụng tệp .htaccess

Ngày đăng: June 23, 2023

Giới thiệu

Tệp .htaccess được sử dụng cho máy chủ web Apache để định cấu hình chi tiết trang web của bạn mà không làm thay đổi tệp cấu hình máy chủ. Tệp này bắt đầu bằng dấu chấm để biểu thị rằng nó bị ẩn trong thư mục. Tệp .htaccess có thể được sử dụng để tải các trang lỗi tùy chỉnh (chẳng hạn như trang 404), tạo chuyển hướng URL, triển khai xác thực được bảo vệ bằng mật khẩu cho các thư mục cụ thể trên máy chủ của bạn, v.v.

Trong hướng dẫn này, bạn sẽ tìm hiểu cách kích hoạt, tạo và sử dụng tệp .htaccess, cũng như một số cách sử dụng phổ biến và tác động đối với tốc độ và bảo mật.

Điều kiện tiên quyết

Nếu bạn muốn thực hành sử dụng tệp .htaccess bằng cách làm theo các ví dụ xuyên suốt hướng dẫn này, bạn sẽ cần:

  • Một máy chủ Ubuntu 20.04 được thiết lập với non-root user có đặc quyền sudo và bật tường lửa. Bạn có thể làm điều này bằng cách làm theo hướng dẫn thiết lập máy chủ ban đầu của Ubuntu 20.04.
  • Máy chủ web Apache được cài đặt trên máy chủ Ubuntu của bạn. Tìm hiểu cách thiết lập nó với 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. Đảm bảo hoàn thành Bước 5 và có tệp máy chủ ảo cho miền của bạn. Hướng dẫn này sẽ đề cập đến your_domain làm ví dụ xuyên suốt và sử dụng /etc/apache2/sites-available/your_domain.conf cho tệp máy chủ ảo.
  • Nếu bạn muốn thực hành với một miền (tùy chọn), bạn có thể thiết lập một miền bằng cách mua một tên miền tại CloudFly, nhận một miền miễn phí trên Freenom hoặc sử dụng công ty đăng ký miền mà bạn chọn. Bạn cũng sẽ cần thiết lập cả hai bản ghi DNS sau cho máy chủ của mình: hai bản ghi A, một bản ghi your_domain và một bản ghi có www.your_domain trỏ tới địa chỉ IP công khai của máy chủ.
  • Nếu bạn cũng muốn bảo mật máy chủ ảo của mình, bạn có thể làm như vậy bằng chứng chỉ đáng tin cậy miễn phí, chẳng hạn như trong hướng dẫn Let's Encrypt dành cho Apache của chúng tôi. Tuy nhiên, nếu bạn không có miền, bạn có thể sử dụng chứng chỉ tự ký để thay thế. Điều này cung cấp cùng một loại mã hóa, nhưng không có xác thực tên miền. Làm theo hướng dẫn SSL tự ký của chúng tôi dành cho Apache để thiết lập điều này.

Sau khi thiết lập xong, bạn có thể thực hành bật và tạo tệp .htaccess trong các bước tiếp theo.

Kích hoạt tệp .htaccess

Nếu bạn có quyền truy cập vào cài đặt máy chủ, bạn có thể chỉnh sửa cấu hình Apache để cho phép tệp .htaccess ghi đè cấu hình trang web tiêu chuẩn.

Bắt đầu bằng cách mở tệp máy chủ ảo 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ẽ sử dụng nano:

  1. 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 tiên quyết, tệp này sẽ chứa các nội dung 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>

Thêm khối nội dung Directory sau vào khối VirtualHost:

/etc/apache2/sites-available/your_domain.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName your_domain
    ServerAlias www.our_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 của khối nội dung Directory này là AllowOverride All, cho phép sử dụng các tệp .htaccess. Sau khi bạn đã thêm thông tin này, hãy lưu và đóng tệp. Nếu bạn đang sử dụng nano, bạn có thể thực hiện việc này bằng cách nhấn CTRL + X rồi nhấn YENTER.

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

  1. sudo service apache2 restart

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

Tạo tệp .htaccess

Để tạo tệp .htaccess trong thiết bị đầu cuối của bạn, bạn cần điều hướng đến thư mục gốc của web. Thư mục gốc web của bạn là nơi đặt tệp .htaccess để các cấu hình của bạn có thể được thực thi đúng cách cho trang web. Vị trí thích hợp của tệp .htaccess rất quan trọng vì các cấu hình trong tệp đó ảnh hưởng đến mọi thứ trong thư mục của nó và các thư mục sau nó. Điều này có nghĩa là nếu bạn đang phục vụ một vài trang web khác nhau trên cùng một máy chủ Apache, thì tệp .htaccess của bạn phải được đặt trong thư mục gốc của trang web dành riêng cho trang web cụ thể đó.

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

  1. sudo nano /var/www/your_domain/.htaccess

Bây giờ bạn đã học được một số cách để tạo tệp .htaccess, tiếp theo chúng ta sẽ xem xét một số cách sử dụng phổ biến của trang .htaccess.

Sử dụng phổ biến cho một trang .htaccess

Có năm cách sử dụng phổ biến cho trang .htaccess trên trang web của bạn:

Mod_Rewrite

Một trong những khía cạnh hữu ích nhất của tệp .htaccessmod_rewrite. Bạn có thể sử dụng tệp .htaccess để chỉ định và thay đổi cách các URL và trang web trên trang của bạn được hiển thị cho người dùng của bạn. Tìm hiểu thêm về cách bạn có thể làm điều này với hướng dẫn của chúng tôi về Cách thiết lập mod_rewrite.

Authentication (Xác thực)

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

Để tạo tệp, hãy chạy lệnh htpasswd và bao gồm tùy chọn -c và tên người dùng để tạo tệp htpasswd được chỉ định. Khi điều này xảy ra, một lời nhắc sẽ yêu cầu bạn cung cấp mật khẩu. Bạn có thể chèn bao nhiêu dòng tùy ý vào tệp htpasswd, nhưng hãy đảm bảo rằng mọi người dùng đều có dòng tương ứng của riêng họ. Ví dụ sau minh họa cách tạo một mục mới trong tệp, trong trường hợp này là cho người dùng sammy:

  1. 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 cat /etc/apache2/.htpasswd và nó sẽ xuất tên người dùng và mật khẩu được mã hóa cho mỗi bản ghi bạn đã thêm.

Khi bạn đã thêm (những) người dùng mong muốn của mình, tiếp theo hãy mở tệp .htaccess. Nếu bạn làm theo hướng dẫn điều kiện tiên quyết, hướng dẫn này sẽ nằm ở vị trí sau:

  1. sudo nano /var/www/your_domain/.htaccess

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

Khi tệp này được mở, hãy thêm các nội dung sau và lưu các thay đổi để bắt đầu sử dụng chức năng mật khẩu:

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

Để tìm hiểu thêm, hãy đọc hướng dẫn của chúng tôi về Cách thiết lập xác thực mật khẩu với Apache.

Custom Error Pages (Trang lỗi tùy chỉnh)

Ngoài ra, tệp .htaccess cho phép bạn tạo các trang lỗi tùy chỉnh cho trang web của mình. Một số lỗi phổ biến nhất là:

  • 400 Bad Request (Yêu cầu sai)
  • 401 Authorization Required (Yêu cầu ủy quyền)
  • 403 Forbidden Page (Trang cấm)
  • 404 File not Found (Không tìm thấy tệp)
  • 500 Internal Error (Lỗi nội bộ)

Để làm cho trang trở nên thân thiện với người dùng và cung cấp nhiều thông tin hơn cho khách truy cập trang so với trang lỗi máy chủ mặc định cung cấp, bạn có thể sử dụng tệp .htaccess để tạo các trang lỗi tùy chỉnh. Đọc thêm trong hướng dẫn của chúng tôi về Cách định cấu hình Apache để sử dụng các trang lỗi tùy chỉnh.

MIME Types (Các loại MIME)

Trong trường hợp trang web của bạn có một số tệp ứng dụng mà máy chủ của bạn không được thiết lập để phân phối, bạn có thể thêm các loại Multipurpose Internet Mail Extensions (Phần mở rộng thư Internet đa năng - MIME) vào máy chủ Apache của mình trong tệp .htaccess với mã sau:

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

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

SSI

Server side includes (SSI) là một trình tiết kiệm thời gian tuyệt vời trên một trang web. Một trong những cách sử dụng phổ biến nhất của SSI là cập nhật một số lượng lớn các trang với một số dữ liệu cụ thể mà không phải cập nhật từng trang riêng lẻ. Ví dụ: nếu bạn muốn thay đổi trích dẫn ở cuối trang.

Để bật SSI, hãy chèn đoạn mã sau vào tệp .htaccess của bạn:

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

Những dòng này cho .htaccess biết rằng các tệp .shtml hợp lệ, với dòng thứ hai đặc biệt làm cho máy chủ phân tích cú pháp tất cả các tệp kết thúc bằng .shtml cho bất kỳ lệnh SSI nào.

Tuy nhiên, nếu bạn có nhiều trang .html mà bạn không muốn đổi tên bằng các phần mở rộng .shtml, thì bạn có thể sử dụng một chiến thuật khác để phân tích chúng cho các lệnh SSI, đó là XBitHack.

Bạn có thể sử dụng chiến thuật XBitHack này bằng cách thêm dòng sau vào tệp .htaccess để khiến Apache kiểm tra tất cả các tệp .html với các quyền thích hợp cho SSI:

/var/www/your_domain/.htaccess
XBitHack on

Để tạo một trang đủ điều kiện cho XBitHack, hãy sử dụng lệnh chmod để thay đổi quyền:

  1. chmod +x pagename.html

Bây giờ bạn đã hiểu về một vài cách sử dụng phổ biến cho trang .htaccess, tiếp theo bạn sẽ tìm hiểu thêm về tác động của tệp .htaccess đối với tốc độ và bảo mật.

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

Mặc dù tệp .htaccess có thể được sử dụng để cải thiện trang web, nhưng có hai điều cần lưu ý rằng nó có thể ảnh hưởng: tốc độ và bảo mật.

Về tốc độ, tệp .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ủ, đây có thể là một thay đổi khó nhận thấy. Điều này có thể là do vị trí của trang vì tệp .htaccess ảnh hưởng đến các trang trong thư mục của nó và tất cả các thư mục sau nó. Điều này có nghĩa là mỗi khi một trang tải, máy chủ sẽ quét thư mục của nó và bất kỳ thư mục nào trước nó cho đến khi đến thư mục cao nhất hoặc tệp .htaccess. Quá trình này sẽ diễn ra miễn là chỉ thị AllowOverride cho phép sử dụng tệp .htaccess như đã được trình bày trong bước kích hoạt tệp .htaccess; các tệp .htaccess có thực sự tồn tại hay không.

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

Kết luận

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

Tham gia kênh Telegram của CloudFly để nhận thêm ưu đãi và không bỏ lỡ bất kỳ khuyến mãi nào từ CloudFly
Chia sẻ

0 câu trả lời