SEO Kỹ Thuật · ⏱ 13 phút đọc · 2,403 từ

.htaccess Là Gì? Code Mẫu Redirect, HTTPS, Cache Dùng Được

.htaccess Là Gì? Code Mẫu Redirect, HTTPS, Cache Dùng Được

Sửa một dòng trong file .htaccess rồi cả website trả về lỗi 500, không vào được cả trang quản trị — đây là sự cố rất quen với ai từng tự chỉnh sửa web trên hosting chia sẻ (shared hosting). .htaccess là file cấu hình của Apache, cho phép thay đổi cách server xử lý request mà không cần quyền chỉnh sửa file cấu hình gốc — nhưng chính vì chạy ngay khi có request, một dòng sai cú pháp có thể làm sập toàn bộ site ngay lập tức.

Bài này đưa ra các đoạn code .htaccess dùng được thật (redirect 301, ép HTTPS, cache, chặn truy cập file) theo tài liệu chính thức của Apache, kèm cảnh báo cụ thể về lỗi 500 hay gặp và cách khôi phục nhanh khi lỡ tay làm sập site.

.htaccess là gì, hoạt động ở đâu trong website

.htaccess (viết tắt của “hypertext access”) là file cấu hình cấp thư mục của máy chủ Apache. Mỗi khi có request tới một thư mục có chứa file này, Apache đọc và áp dụng các chỉ thị (directive) bên trong trước khi trả về nội dung. Phần lớn website WordPress trên hosting chia sẻ dùng .htaccess để xử lý đường dẫn đẹp (permalink), redirect, và một số quy tắc bảo mật/tốc độ cơ bản — đây cũng là lý do file này gần như luôn tồn tại ở thư mục gốc của site WordPress.

Vì sao dùng .htaccess thay vì sửa file cấu hình server gốc

Theo tài liệu chính thức của Apache, cách được khuyến nghị khi có quyền truy cập cấu hình server (VirtualHost) là đặt chỉ thị trực tiếp ở đó, vì xử lý nhanh hơn — Apache không cần đọc lại .htaccess ở mỗi request. .htaccess chỉ là PHƯƠNG ÁN THAY THẾ khi bạn không có quyền đó, điển hình là trên hosting chia sẻ chỉ cấp quyền ở cấp thư mục web của riêng bạn. Vì vậy nếu bạn dùng VPS/server riêng và có quyền chỉnh VirtualHost, nên ưu tiên đặt chỉ thị ở cấu hình server thay vì .htaccess.

Đoạn code .htaccess dùng được: redirect 301

Chuyển hướng một URL cũ sang URL mới, giữ nguyên giá trị SEO đã tích lũy:

Mục đích Đoạn code
Redirect 1 URL cụ thể sang URL mới Redirect 301 /duong-dan-cu/ /duong-dan-moi/
Redirect toàn bộ domain cũ sang domain mới RewriteEngine On
RewriteCond %{HTTP_HOST} ^olddomain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.olddomain.com$
RewriteRule ^(.*)$ https://newdomain.com/$1 [R=301,L]

Đoạn code .htaccess dùng được: ép HTTPS

Theo tài liệu Apache HTTP Server 2.4 (mục “Forcing HTTPS” trong trang Redirecting and Remapping with mod_rewrite), đoạn mẫu chính thức là:

Mục đích Đoạn code
Ép toàn bộ site chạy HTTPS (mẫu chính thức Apache) RewriteEngine On
RewriteCond “%{HTTPS}” !=on
RewriteRule “^(.*)” “https://%{SERVER_NAME}$1” [R=301,L]

Lưu ý quan trọng Apache nêu rõ: biến %{HTTPS} đọc trực tiếp từ module mod_ssl, không phải một biến môi trường chung. Nếu website của bạn chạy sau một reverse proxy hoặc load balancer (phổ biến khi dùng CDN/Cloudflare ở chế độ proxy), %{HTTPS} có thể không phản ánh đúng trạng thái kết nối thật — trường hợp này nên kiểm tra header X-Forwarded-Proto thay thế.

Vừa sửa .htaccess xong site báo lỗi, chưa biết gỡ từ đâu?

VIDCO rà soát file .htaccess, xác định đúng dòng gây lỗi và khôi phục site hoạt động trước khi tối ưu lại redirect/cache cho đúng chuẩn.

Nhờ VIDCO kiểm tra ngay
 Zalo 034 301 8345

Đoạn code .htaccess dùng được: cache và chặn truy cập file

Mục đích Đoạn code (rút gọn)
Đặt thời hạn cache cho ảnh/CSS/JS (cần mod_expires) <IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpeg “access plus 1 month”
ExpiresByType text/css “access plus 1 month”
ExpiresByType application/javascript “access plus 1 month”
</IfModule>
Chặn truy cập trực tiếp vào chính file .htaccess <Files “.htaccess”>
Order Allow,Deny
Deny from all
</Files>
Chặn truy cập trực tiếp vào file wp-config.php (WordPress) <Files “wp-config.php”>
Order Allow,Deny
Deny from all
</Files>

Các chỉ thị cache này cần module mod_expires được bật trên server; nếu hosting không hỗ trợ module này, đoạn code trên sẽ bị bỏ qua (nằm trong khối <IfModule>) mà không gây lỗi 500, nhưng cũng không có tác dụng cache như mong đợi.

Cảnh báo: vì sao sửa .htaccess hay gây lỗi 500

Khác với sửa nội dung bài viết, .htaccess là file cấu hình server — Apache đọc và thực thi ngay ở mỗi request, nên một lỗi cú pháp nhỏ (thiếu dấu đóng, sai chính tả chỉ thị, module chưa được bật nhưng vẫn dùng chỉ thị của module đó ngoài khối <IfModule>) có thể khiến toàn bộ site trả lỗi 500 ngay lập tức, không riêng trang vừa sửa. Đây là khác biệt lớn nhất khiến .htaccess cần được chỉnh sửa cẩn thận hơn các file nội dung thông thường — xem thêm cách xử lý tổng thể ở bài lỗi 500 Internal Server Error.

Cách phòng ngừa và khôi phục khi .htaccess làm sập site

  1. Luôn sao lưu file .htaccess hiện tại trước khi sửa: đổi tên bản gốc thành dạng lưu trữ, không xóa, để có thể phục hồi ngay nếu bản mới gây lỗi.
  2. Sửa từng phần nhỏ, kiểm tra site sau mỗi lần thêm đoạn code mới: tránh dán nhiều đoạn chưa kiểm tra cùng lúc, khó xác định đoạn nào gây lỗi khi có sự cố.
  3. Nếu site đã lỗi 500, truy cập qua trình quản lý file của hosting (không qua FTP nếu FTP cũng bị ảnh hưởng) để đổi tên .htaccess hiện tại, khôi phục bản sao lưu.
  4. Với WordPress, có thể tạo lại .htaccess mặc định bằng cách vào mục Cài đặt > Đường dẫn tĩnh (Permalinks) trong quản trị, bấm Lưu lại mà không đổi gì — WordPress sẽ ghi lại phần chỉ thị permalink cơ bản vào .htaccess.

Sai lầm hay gặp khi dùng .htaccess

  • Copy nguyên đoạn code từ một website khác mà không hiểu nó làm gì: một đoạn redirect hoặc chặn truy cập viết cho cấu trúc domain khác có thể gây lỗi khi áp vào domain của bạn.
  • Dùng chỉ thị của một module chưa được hosting bật (ví dụ mod_expires, mod_deflate) mà không bọc trong khối <IfModule> kiểm tra trước — một số trường hợp vẫn gây lỗi tùy cấu hình server.
  • Chồng nhiều quy tắc redirect gây lặp vòng (redirect loop): ví dụ vừa ép HTTPS vừa có một rule redirect ngược về HTTP ở nơi khác, khiến trình duyệt báo lỗi quá nhiều lần chuyển hướng.
  • Không sao lưu trước khi sửa: đây là nguyên nhân khiến một lỗi nhỏ biến thành sự cố mất nhiều thời gian xử lý hơn cần thiết.

Nguồn tham khảo

Thông tin trong bài được đối chiếu với các nguồn chính thức dưới đây tại thời điểm biên soạn; văn bản và chính sách có thể thay đổi.

Câu hỏi thường gặp

.htaccess có bắt buộc phải có trên mọi website không?

Không. .htaccess chỉ cần thiết khi bạn dùng Apache và không có quyền chỉnh cấu hình server gốc (VirtualHost), điển hình là trên hosting chia sẻ. Nếu dùng server khác (ví dụ Nginx) hoặc có quyền chỉnh VirtualHost, có thể không cần .htaccess.

Sửa .htaccess xong site báo lỗi 500, nguyên nhân thường là gì?

Thường do sai cú pháp (thiếu dấu đóng, chỉ thị viết sai), hoặc dùng chỉ thị của một module chưa được server bật. Cách xử lý nhanh nhất là khôi phục lại bản .htaccess sao lưu trước đó.

Dùng .htaccess để ép HTTPS có ảnh hưởng gì khi site sau Cloudflare?

Có thể ảnh hưởng. Biến %{HTTPS} đọc trực tiếp từ mod_ssl của Apache, khi site chạy sau reverse proxy/CDN ở chế độ proxy, biến này có thể không phản ánh đúng; nên kiểm tra header X-Forwarded-Proto trong trường hợp này.

WordPress tự tạo lại .htaccess được không nếu file bị xóa mất?

Được, với phần chỉ thị permalink cơ bản — vào Cài đặt > Đường dẫn tĩnh trong quản trị, bấm Lưu lại mà không cần đổi gì. Các đoạn code tùy chỉnh khác (redirect riêng, chặn file) sẽ không tự được tạo lại, cần thêm thủ công từ bản sao lưu.

Có nên dùng .htaccess để redirect hàng loạt URL cùng lúc không?

Có thể, nhưng với số lượng lớn nên cân nhắc dùng plugin quản lý redirect thay vì viết tay nhiều dòng rule trong .htaccess, giúp dễ theo dõi và sửa sau này hơn.

Cần rà soát kỹ thuật kỹ trước khi tự chỉnh .htaccess trên site đang chạy?

VIDCO kiểm tra cấu hình server, backup trước khi chỉnh sửa, và xử lý redirect/cache/bảo mật đúng cách để tránh sự cố ngoài ý muốn.

Nhờ VIDCO kiểm tra kỹ thuật
 Zalo 034 301 8345

.htaccess có ảnh hưởng gì tới SEO

Vài quy tắc trong .htaccess tác động trực tiếp tới cách công cụ tìm kiếm thu thập dữ liệu trang. Redirect 301 đặt đúng giúp giữ lại giá trị của URL cũ khi đổi đường dẫn, trong khi để nhiều URL cũ trả về lỗi 404 mà không redirect sẽ làm mất liên kết đã có tới các trang đó. Ép toàn site chạy HTTPS cũng giúp tránh tình trạng công cụ tìm kiếm thu thập dữ liệu song song cả hai phiên bản HTTP và HTTPS của cùng một trang, dễ gây trùng nội dung không cần thiết. Vì vậy, nên xem .htaccess là một phần của việc chăm sóc kỹ thuật trang, không chỉ là file xử lý lỗi khi có sự cố.

Đọc thêm

Nguồn đối chiếu: httpd.apache.org/docs/2.4/rewrite/remapping.html (Apache HTTP Server 2.4 — Redirecting and Remapping with mod_rewrite, mục Forcing HTTPS) — kiểm tra ngày 08/10/2026.

LA
Head of SEO & Strategy · VIDCO GROUP
Head of SEO & Strategy tại VIDCO, có chứng chỉ Google. Phụ trách SEO, GEO và chiến lược nội dung tìm kiếm. Bài viết do đội nội dung VIDCO biên soạn, Trần Thị Lan Anh duyệt chuyên môn và cập nhật khi thông tin thay đổi — góp ý hoặc đề nghị đính chính tại trang Biên tập và đính chính.

Thương hiệu bạn xứng đáng
được AI nhắc đến.

Đặt lịch AI Visibility Audit miễn phí — Vidco Group sẽ cho bạn thấy bức tranh toàn cảnh.

034.301.8345 Chat Zalo WhatsApp