SEO Audit

HTTP Headers

Các trường dữ liệu trong phản hồi HTTP (ví dụ: Cache-Control, Content-Type, Vary), ảnh hưởng đến caching, render và lập chỉ mục.

4 lượt xem Cập nhật: 29/05/2026

HTTP Headers là gì?

HTTP Headers là các trường dữ liệu đi kèm trong phần đầu (header) của phản hồi HTTP từ máy chủ về trình duyệt hoặc công cụ tìm kiếm. Chúng không hiển thị trên trang web nhưng chứa thông tin quan trọng về cách xử lý nội dung — như thời gian lưu cache, loại dữ liệu trả về, mã hóa, điều kiện render và khả năng lập chỉ mục.

Ví dụ: Khi bạn truy cập một trang, máy chủ gửi lại phản hồi gồm hai phần: status line (ví dụ: HTTP/1.1 200 OK) và headers (như Cache-Control: public, max-age=3600, Content-Type: text/html; charset=utf-8). Các header này không phải là nội dung chính, nhưng ảnh hưởng sâu đến hiệu suất, bảo mật và SEO.

Tại sao quan trọng trong SEO?

HTTP Headers tác động trực tiếp đến ba yếu tố cốt lõi mà Google và các công cụ tìm kiếm đánh giá:

  • Lập chỉ mục: Header X-Robots-Tag hoặc robots trong Content-Type có thể chặn hoặc cho phép thu thập trang — thay thế hoặc bổ sung thẻ <meta name="robots">.
  • Caching: Header Cache-ControlExpires quyết định trình duyệt và CDN có lưu bản sao trang hay không — ảnh hưởng đến tốc độ tải, tần suất bot quét và tiêu thụ băng thông.
  • Render và trải nghiệm người dùng: Header Vary giúp phân biệt phiên bản trang (mobile/desktop), Content-Encoding hỗ trợ nén Gzip/Brotli, còn Strict-Transport-Security bắt buộc HTTPS — yếu tố xếp hạng rõ ràng từ năm 2014.

Nếu cấu hình sai, bot có thể bỏ sót trang, tải chậm hơn, hoặc hiểu nhầm nội dung — dẫn đến giảm thứ hạng dù nội dung tốt.

Cách hoạt động

Khi trình duyệt hoặc bot gửi yêu cầu HTTP (GET/HEAD), máy chủ phản hồi kèm headers trước phần thân (body). Các header được đọc tuần tự, ưu tiên cao hơn thẻ HTML hoặc JavaScript. Ví dụ:

  1. Bot Googlebot gửi yêu cầu tới https://example.com/blog.
  2. Máy chủ trả về: HTTP/1.1 200 OK + headers như Cache-Control: no-cache, X-Robots-Tag: noindex.
  3. Bot đọc X-Robots-Tag trước, thấy noindex → không thêm trang vào chỉ mục, dù trang có thẻ <meta name="robots" content="index">.
  4. Header Cache-Control ảnh hưởng đến việc bot có lưu bản tạm để render sau hay không — đặc biệt với trang dùng JavaScript nặng.

Lưu ý: Một số header chỉ áp dụng ở mức máy chủ (ví dụ Strict-Transport-Security), không thể đặt bằng PHP hay .htaccess nếu không có quyền cấu hình.

Hướng dẫn thực hiện

Để kiểm tra và tối ưu HTTP Headers cho SEO, làm theo các bước sau:

  1. Kiểm tra hiện trạng: Dùng Chrome DevTools > tab Network > chọn yêu cầu > xem phần Response Headers. Hoặc chạy lệnh curl -I https://domain.com trong terminal.
  2. Xác định mục tiêu tối ưu:
    • Trang công khai: cần Cache-Control: public, max-age=3600 và không có X-Robots-Tag: noindex.
    • Trang admin/thử nghiệm: nên có X-Robots-Tag: noindex, nofollowCache-Control: private, no-store.
    • Trang AMP: bắt buộc Content-Type: text/html; charset=utf-8Link: <https://example.com/page/amp>; rel="amphtml" (header hoặc thẻ link).
  3. Cấu hình máy chủ:
    • Apache (.htaccess): Header set Cache-Control "public, max-age=3600"
    • Nginx (server block): add_header Cache-Control "public, max-age=3600";
    • Cloudflare: dùng Page Rules hoặc Transform Rules để thêm/sửa header.
  4. Thử nghiệm và xác minh: Kiểm tra lại bằng curl -I, công cụ HTTP Checker hoặc Web.dev Headers Tool. Đảm bảo không có xung đột giữa header và thẻ meta.

Lỗi thường gặp

Dưới đây là những lỗi HTTP Headers phổ biến trong audit SEO và cách khắc phục:

Header Lỗi Hậu quả SEO Cách sửa
X-Robots-Tag Có giá trị noindex trên trang chủ hoặc danh mục Bị loại khỏi chỉ mục hoàn toàn Xóa header hoặc thay bằng index, follow; kiểm tra cả file robots.txt và thẻ meta.
Cache-Control no-cache hoặc max-age=0 trên trang tĩnh Tăng tải máy chủ, bot quét chậm hơn, giảm tần suất thu thập Đặt public, max-age=3600 cho HTML; immutable, max-age=31536000 cho tài nguyên tĩnh (CSS/JS/img).
Vary Thiếu Vary: User-Agent khi dùng chuyển hướng mobile/dynamic serving Googlebot Mobile có thể thấy phiên bản desktop → hiểu sai nội dung Thêm Vary: User-Agent (nếu dùng dynamic serving); với responsive design thì không cần.
Content-Type Thiếu charset=utf-8 hoặc sai định dạng (ví dụ: text/plain cho HTML) Hiển thị lỗi ký tự, bot render sai, có thể bỏ qua trang Sửa thành text/html; charset=utf-8 cho trang HTML, application/json cho API.

Ví dụ thực tế

Một website tin tức Việt Nam từng bị giảm 40% lưu lượng từ Google trong 2 tuần. Audit phát hiện:

  • Trang danh mục (/the-thao) trả về header: X-Robots-Tag: noindex do lỗi cấu hình plugin SEO.
  • Header Cache-Control bị đặt thành private, max-age=60 trên toàn bộ trang — khiến CDN không lưu, bot phải tải lại mỗi lần.

Sau khi sửa:
– Xóa X-Robots-Tag trên danh mục,
– Đổi Cache-Control thành public, max-age=7200 cho HTML,
– Thêm Vary: Accept-Encoding để hỗ trợ Brotli.
→ Trong 10 ngày, trang quay lại chỉ mục đầy đủ và tăng 22% lượt click từ tìm kiếm.

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

Header nào mạnh hơn: X-Robots-Tag hay thẻ meta robots?

X-Robots-Tag có ưu tiên cao hơn thẻ <meta name="robots">. Nếu cả hai mâu thuẫn (ví dụ header ghi noindex, thẻ meta ghi index), Google tuân theo header. Đây là cơ chế thiết kế để quản lý ở tầng máy chủ — an toàn và hiệu quả hơn.

Có nên dùng Cache-Control cho trang WordPress?

Có, nhưng cần phân biệt loại trang. Trang bài viết tĩnh: nên dùng public, max-age=3600. Trang có nội dung thay đổi theo người dùng (ví dụ: dashboard, giỏ hàng): dùng private, no-store. Với WordPress, tránh đặt Cache-Control chung toàn bộ site nếu dùng plugin cá nhân hóa — có thể gây cache sai.

Header Vary có cần thiết với website responsive?

Không cần. Vary chỉ bắt buộc khi dùng dynamic serving (cùng URL, trả nội dung khác cho mobile/desktop). Với thiết kế responsive (CSS media query), cùng một HTML được render cho mọi thiết bị → không cần Vary: User-Agent. Việc thêm sai có thể gây phân mảnh cache không cần thiết.