close

File .htaccess là gì? Tác dụng và cách tạo, sửa file .htaccess an toàn

Tác giả: Hồng Nhi Ngày đăng: 19/03/2021 Chuyên mục: Webmasters
Disclosure
Website Tino blog được cung cấp bởi Tino Group. Truy cập và sử dụng website đồng nghĩa với việc bạn đồng ý với các điều khoản và điều kiện trong chính sách bảo mật - điều khoản sử dụng nội dung. Tino Group có thể thay đổi điều khoản sử dụng bất cứ lúc nào. Việc bạn tiếp tục sử dụng Tino blog sau khi thay đổi có nghĩa là bạn chấp nhận những thay đổi đó.
Why Trust Us
Các bài viết với hàm lượng tri thức cao tại Tino blog được tạo ra bởi các chuyên viên Marketing vững chuyên môn và được kiểm duyệt nghiêm túc theo chính sách biên tập bởi đội ngũ biên tập viên dày dặn kinh nghiệm. Mọi nỗ lực của chúng tôi đều hướng đến mong muốn mang đến cho cộng đồng nguồn thông tin chất lượng, chính xác, khách quan, đồng thời tuân thủ các tiêu chuẩn cao nhất trong báo cáo và xuất bản.

File .htaccess (Hypertext Access) là tệp cấu hình theo thư mục của web server Apache và LiteSpeed: các chỉ thị đặt trong file áp dụng cho thư mục chứa nó và mọi thư mục con. Trên hosting, .htaccess dùng để tạo đường dẫn tĩnh, chuyển hướng URL, ép HTTPS, chặn truy cập thư mục hoặc địa chỉ IP mà không cần quyền sửa cấu hình máy chủ.

Bài thuộc nhóm quản trị website trên hosting trong chủ đề hosting. Khi đọc hướng dẫn sửa lỗi WordPress, bạn sẽ thường gặp yêu cầu chỉnh file này; phần dưới giải thích nó nằm ở đâu, sửa thế nào cho an toàn và khi nào nó không có tác dụng.

File .htaccess là gì?

File .htaccess là “tệp cấu hình phân tán” của Apache: thay vì sửa file cấu hình chung của máy chủ, chủ website đặt chỉ thị vào thư mục của mình (Apache HTTP Server: .htaccess files). Apache đọc file này mỗi khi có yêu cầu tới thư mục đó, nên thay đổi có hiệu lực ngay ở lượt truy cập kế tiếp, không cần khởi động lại web server.

Tên file bắt đầu bằng dấu chấm. Trên Linux, file có tên như vậy là file ẩn, nên File Manager hoặc phần mềm FTP thường không hiện nó nếu bạn chưa bật hiển thị file ẩn.

Không phải chỉ thị nào cũng dùng được trong .htaccess. Quản trị máy chủ quyết định nhóm chỉ thị được phép qua AllowOverride; mặc định của Apache 2.4 là None, tức bỏ qua hoàn toàn .htaccess nếu chưa được bật. Trên shared hosting, nhà cung cấp thường bật sẵn các nhóm phổ biến như rewrite, chuyển hướng, phân quyền.

Chỉ thị trong .htaccess áp dụng cho thư mục chứa file và mọi thư mục con. Khi một yêu cầu đi vào thư mục sâu, Apache đọc lần lượt các file .htaccess từ thư mục gốc xuống, gộp lại, và chỉ thị ở thư mục sâu hơn được ưu tiên khi trùng nhau.

Sơ đồ phạm vi thư mục của .htaccess: yêu cầu tới /wp-content/uploads/a.php, Apache đọc public_html/.htaccess, bỏ qua wp-content vì không có file, đọc uploads/.htaccess chặn file .php nên trả lỗi 403

Riêng quy tắc rewrite của mod_rewrite không được kế thừa mặc định: nếu thư mục con có RewriteEngine On với quy tắc riêng, các quy tắc rewrite của thư mục cha không còn chạy ở đó, trừ khi dùng RewriteOptions Inherit.

Web server nào đọc file .htaccess?

File .htaccess phát huy đủ tác dụng trên Apache và LiteSpeed Web Server Enterprise. OpenLiteSpeed hiểu một phần (quy tắc viết lại URL) và áp dụng sau khi nạp lại cấu hình, còn Nginx bỏ qua file này. Theo tài liệu WordPress, Nginx không hỗ trợ tệp cấu hình riêng cho từng thư mục kiểu .htaccess; mọi quy tắc phải đưa vào file cấu hình máy chủ.

Bảng web server đọc file .htaccess: Apache có, LiteSpeed Enterprise có, OpenLiteSpeed chỉ một phần rewrite và cần khởi động lại, Nginx không đọc

Tino dùng LiteSpeed trên các gói hosting, vì vậy quy tắc viết cho Apache áp dụng được. Trên VPS tự cài Nginx, sửa .htaccess không có tác dụng; khác biệt giữa các web server xem bài so sánh OpenLiteSpeed và Nginx.

File .htaccess nằm ở đâu?

File .htaccess chính của website thường nằm ở thư mục gốc, là public_html với tên miền chính hoặc thư mục riêng của tên miền phụ. WordPress tạo hoặc cập nhật file này khi bạn lưu cài đặt Permalink. Thư mục con như wp-content/uploads có thể có file .htaccess riêng, áp dụng cho thư mục đó.

Để hiện file .htaccess:

  • cPanel File Manager: bấm Settings ở góc phải, tick Show Hidden Files (dotfiles) => Save.
  • DirectAdmin File Manager: file ẩn thường hiện sẵn trong danh sách, như các ảnh chụp ở bài upload code WordPress lên hosting DirectAdmin.
  • FileZilla: menu Server => Force showing hidden files.

Không thấy file dù đã bật hiển thị, có thể website chưa có .htaccess. Bạn tạo mới theo hướng dẫn bên dưới.

Sử dụng file .htaccess ra sao?

Sửa .htaccess gồm ba việc: sao lưu file, mở bằng trình soạn thảo văn bản thuần, rồi thêm hoặc sửa từng chỉ thị và tải lại website để kiểm tra. Mở file bằng chức năng Edit của File Manager, hoặc tải về sửa bằng trình soạn thảo văn bản (Notepad, Notepad++, VS Code) rồi tải lên lại. Không dùng Word hay phần mềm thêm định dạng vào file.

Nội dung .htaccess là các chỉ thị (directive) của Apache, mỗi dòng một chỉ thị. Một số chỉ thị như RewriteRule dùng biểu thức chính quy (regular expression) để so khớp URL, nên cần hiểu cú pháp này khi viết quy tắc chuyển hướng phức tạp.

Một ký tự sai, hoặc dùng chỉ thị mà máy chủ không cho phép, sẽ khiến cả thư mục trả lỗi 500 Internal Server Error. Khi gặp lỗi sau khi sửa, khôi phục bản sao lưu là website chạy lại (cách sửa lỗi 500 trên website WordPress).

Sử dụng .htaccess cần lưu ý những gì?

Năm lưu ý giúp tránh lỗi khi sửa:

  • Sao lưu file trước mọi thay đổi: tải về máy hoặc sao chép thành .htaccess.bak.
  • Sửa từng quy tắc một, tải lại website sau mỗi lần để biết dòng nào gây lỗi.
  • Giữ nguyên khối do WordPress hay plugin tạo (giữa # BEGIN và # END); đặt quy tắc riêng ở ngoài khối để không bị ghi đè.
  • Với bảo vệ thư mục bằng mật khẩu, đặt file .htpasswd ngoài public_html.
  • Quy tắc chuyển hướng sai có thể tạo vòng lặp chuyển hướng; kiểm tra bằng cửa sổ ẩn danh.

Tác dụng của file .htaccess

File .htaccess cho chủ website tự cấu hình một phần web server trong phạm vi thư mục của mình, không cần quyền quản trị máy chủ: tạo đường dẫn đẹp, chuyển hướng, chặn truy cập và đặt trang lỗi riêng. Các việc thường làm:

  • Đường dẫn tĩnh: WordPress dùng rewrite để biến ?p=123 thành đường dẫn đẹp (permalink là gì).
  • Chuyển hướng: 301 từ trang cũ sang trang mới, ép HTTPS, gom www và không www (cách redirect www sang non-www).
  • Bảo mật: chặn xem danh sách file trong thư mục, chặn truy cập file nhạy cảm, chặn IP hoặc bot.
  • Trang lỗi riêng: hiển thị trang 404, 403 do bạn thiết kế.
  • Phân quyền cho hosting dùng chung: mỗi tài khoản chỉ chỉnh được thư mục của mình, không đụng tới cấu hình chung của máy chủ.

Ví dụ một số quy tắc .htaccess thường dùng

Các đoạn dưới viết theo cú pháp Apache 2.4. Thay tên miền, đường dẫn và IP bằng giá trị của bạn; IP 203.0.113.10 là dải dành cho tài liệu.

Ép toàn bộ truy cập sang HTTPS (cần chứng chỉ SSL đã cài):

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Chuyển hướng 301 một trang cũ sang trang mới:

Redirect 301 /trang-cu/ https://tenmien.vn/trang-moi/

Chặn hiển thị danh sách file khi thư mục không có trang index:

Options -Indexes

Chặn truy cập trực tiếp file cấu hình WordPress:

<Files wp-config.php>
    Require all denied
</Files>

Chặn một địa chỉ IP:

<RequireAll>
    Require all granted
    Require not ip 203.0.113.10
</RequireAll>

Chặn chạy file PHP trong thư mục uploads (đặt file .htaccess này trong wp-content/uploads):

<FilesMatch "\.php$">
    Require all denied
</FilesMatch>

Trang lỗi 404 riêng:

ErrorDocument 404 /404.html

Chặn bot theo User-Agent và các cách khác xem bài cách chặn bot truy cập website.

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

Không nên dựa vào .htaccess khi bạn có quyền sửa cấu hình chính của web server, khi website chạy Nginx, hoặc khi cần đổi thiết lập PHP trên hosting chạy PHP-FPM. Trong các trường hợp này, .htaccess hoặc không có tác dụng, hoặc làm chậm máy chủ hơn cách khác.

  • VPS, máy chủ riêng: Apache khuyên đặt cấu hình vào file cấu hình chính và tắt AllowOverride, vì khi cho phép .htaccess, máy chủ phải tìm file ở mọi thư mục cho mỗi yêu cầu (tài liệu Apache).
  • Nginx: .htaccess bị bỏ qua hoàn toàn, quy tắc phải chuyển sang khối server, location.
  • Thiết lập PHP: chỉ thị php_value, php_flag chỉ chạy khi PHP là module của Apache hoặc qua LiteSpeed LSAPI; PHP-FPM, CGI báo lỗi 500. Khi đó dùng file .user.ini hoặc công cụ chọn phiên bản PHP của panel (tài liệu PHP).

Cách tạo file .htaccess

Có hai cách tạo file .htaccess: tạo trực tiếp trong File Manager của hosting, hoặc soạn trên máy tính rồi tải lên thư mục gốc của website. Với WordPress, có thể để WordPress tự tạo lại file khi lưu Permalink.

Tạo trong File Manager của hosting

  • Bước 1: Đăng nhập cPanel hoặc DirectAdmin bằng thông tin trong email kích hoạt hosting.
  • Bước 2: Mở File Manager, vào thư mục gốc của website (public_html), bấm + File (cPanel) hoặc nhấp chuột phải => Create File (DirectAdmin).
  • Bước 3: Đặt tên .htaccess, tạo file, rồi mở bằng Edit để dán nội dung và lưu.

Tạo trên máy tính rồi tải lên

Mở Notepad, dán nội dung, chọn Save as, đặt tên .htaccess và chọn kiểu All Files để Windows không tự thêm đuôi .txt. Tải file lên thư mục gốc của website bằng FTP (cách upload file lên hosting).

Nội dung .htaccess mặc định của WordPress

Nếu website WordPress mất file .htaccess hoặc permalink trả lỗi 404, dán khối mặc định sau (theo tài liệu WordPress), hoặc vào Settings => Permalinks bấm Save Changes để WordPress tự tạo lại:

# BEGIN WordPress
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

Lỗi permalink còn có nguyên nhân khác, xem bài sửa lỗi permalink WordPress không hoạt động.

Những câu hỏi thường gặp

File .htaccess bị lỗi thì làm thế nào?

Website thường báo lỗi 500 hoặc chuyển hướng vòng lặp. Mở File Manager hoặc FTP, đổi tên .htaccess thành .htaccess.bak để tắt nó, rồi khôi phục bản sao lưu hoặc dán lại khối mặc định. Nội dung và database của website không bị ảnh hưởng.

Làm sao hiện file .htaccess bị ẩn trên cPanel?

Trong File Manager, bấm Settings ở góc phải, tick Show Hidden Files (dotfiles) rồi bấm Save. Tải lại trang, file .htaccess sẽ hiện trong thư mục.

Vì sao plugin SEO hay plugin cache không sửa được file .htaccess?

Thường do quyền file không cho PHP ghi, hoặc website chạy trên Nginx nên không dùng .htaccess. Kiểm tra quyền file (thường 644) và web server; với Nginx, quy tắc phải thêm vào cấu hình máy chủ.

Ai có quyền chỉnh sửa file .htaccess?

Người có quyền vào thư mục website qua File Manager, FTP hoặc SSH. Vì một dòng sai làm cả website lỗi, chỉ cấp quyền này cho người quản trị và luôn giữ bản sao lưu.

Website trên Nginx có dùng .htaccess được không?

Không. Nginx không đọc .htaccess; bạn phải chuyển quy tắc sang khối server và location trong file cấu hình Nginx, rồi nạp lại cấu hình. Hosting dùng LiteSpeed hoặc Apache thì .htaccess hoạt động bình thường.

Cần hosting ổn định cho website? Hosting của Tino dùng ổ NVMe, LiteSpeed và cPanel để bạn tự quản trị. Xem cấu hình và giá trên trang sản phẩm.

Hồng Nhi

Content Manager

Chị Hồng Nhi, "người giữ lửa" đứng sau wiki.tino.org, là một Content Manager tài năng với hành trình sự nghiệp đầy cảm hứng. Tốt nghiệp cử nhân Ngữ văn Anh năm 2017, cử nhân Ngữ văn Nga năm 2019 và Thạc sĩ Quan hệ Quốc tế năm 2024 tại trường Đại học KHXH&NV - ĐHQG TP.HCM, chị sở hữu nền tảng kiến thức vững chắc cùng kinh nghiệm dày dặn trong lĩnh vực truyền thông.Vốn xuất thân từ "xã hội" nhưng với niềm đam mê sáng tạo nội dung giá trị, chị đã "lấn sân" sang lĩnh vực công nghệ và nhanh chóng khẳng định bản thân. Với phương châm "diễn giải cái khó hiểu nhất bằng cách dễ hiểu nhất", chị đã chinh phục độc giả bằng những bài viết blog công nghệ súc tích, dễ hiểu và hữu ích. Đồng hành cùng TinoHost từ những ngày đầu thành lập, chị Hồng Nhi hiện là Content Manager, người trực tiếp quản lý và vận hành wiki.tino.org cùng nhiều website uy tín khác.

Xem thêm bài viết

Bài viết liên quan