SEO kỹ thuật

Công cụ kiểm tra SEO HTTP Link Header

Nhập một URL. Chúng tôi sẽ lấy dữ liệu ở phía máy chủ và phân tích HTTP response header Link để tìm các mục rel="canonical", rel="alternate" hreflang, và rel="next"/"prev" theo RFC 8288 — sau đó đối chiếu với các thẻ HTML <link> trên cùng trang và báo cáo bất kỳ xung đột nào.

Được bảo vệ bởi reCAPTCHA. Chúng tôi lấy URL ở phía máy chủ (có bảo vệ SSRF) và chỉ đọc response header của nó — không lưu trữ bất kỳ thông tin nào.

Tại sao Link header lại quan trọng

Hầu hết mọi công cụ kiểm tra canonical và hreflang chỉ nhìn vào thẻ HTML <link> trong <head> của trang. RFC 8288 định nghĩa một vị trí thứ hai, có giá trị tương đương, để khai báo cùng những tín hiệu đó: HTTP response header Link:. Google ghi rõ tài liệu và tôn trọng cơ chế này, WordPress cùng nhiều CDN tự động gửi nó, và đây là cách duy nhất để gán canonical hoặc hreflang cho một tài nguyên không phải HTML — một file PDF, hình ảnh, hay phản hồi JSON API — vì những tài nguyên đó vốn không có <head> để đặt thẻ <link>. Vì không nơi nào hiển thị nó, một header do quy tắc edge của CDN thiết lập âm thầm khác với thẻ HTML, hay một file PDF mà chưa ai từng nghĩ đến việc gán canonical theo cách này, đều hoàn toàn vô hình trong trình duyệt lẫn trong mọi công cụ chỉ đọc HTML.

Công cụ này kiểm tra những gì

Một trình phân tích RFC 8288 thực thụ — không phải đoán mò bằng regex — đọc đúng response header thực tế mà máy chủ của bạn gửi đi.

Phân tích Link header theo RFC 8288

Phân tích giá trị header Link: gốc — bao gồm nhiều mục phân tách bằng dấu phẩy, tham số có dấu ngoặc kép, và danh sách rel đa giá trị — thành các mục rel=canonical, rel=alternaterel=next/prev có cấu trúc, đồng thời báo cáo bất kỳ đoạn nào không phân tích được thành một link-value hợp lệ.

Xung đột canonical giữa header và HTML

So sánh mục tiêu rel="canonical" trong header với thẻ HTML <link rel="canonical"> của trang. Sự không khớp là một vấn đề có thật và âm thầm: công cụ tìm kiếm có thể tuân theo bất kỳ tín hiệu nào trong hai tín hiệu đó, khiến việc canonicalization trở nên không xác định. Cũng báo cáo trường hợp có nhiều hơn một canonical trong header, mục tiêu khác tên miền, và liệu nó có tự tham chiếu (self-reference) đến URL đã lấy hay không.

Hreflang qua header

Xác thực mã ngôn ngữ của từng mục header rel="alternate"; hreflang="...", kiểm tra thiếu x-default khi có từ 2 mục trở lên, thiếu mục tự tham chiếu, và các mã trùng lặp trỏ đến các URL khác nhau — sau đó đối chiếu toàn bộ tập hợp với các thẻ hreflang HTML của trang để tìm xung đột.

Độ bao phủ tài nguyên không phải HTML

Đối với PDF, hình ảnh hoặc phản hồi API (không có HTML nên không thể có thẻ <link>), công cụ báo cáo trường hợp không có canonical nào được gửi qua header — nghĩa là tài nguyên đó hoàn toàn không có tín hiệu canonicalization cho công cụ tìm kiếm, điều rất dễ bị bỏ sót hoàn toàn.

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

HTTP Link header là gì và tại sao trang web của tôi lại gửi nó?

Đó là một response header, được định nghĩa bởi RFC 8288, mang cùng các mối quan hệ dựa trên rel (canonical, alternate, next, prev và hơn thế nữa) thường được viết dưới dạng thẻ HTML <link> — chỉ khác là nó hoạt động với mọi loại phản hồi, dù là HTML hay không. Lõi WordPress tự động gửi một số Link header; nhiều CDN và reverse proxy có thể chèn hoặc viết lại chúng ở edge, đôi khi mà chính trang gốc cũng không hề hay biết.

Canonical trong header khác với thẻ canonical HTML của tôi — đây có phải là lỗi không?

Gần như luôn luôn là có. Tài liệu chính thức của Google nói rằng cả hai đều là tín hiệu hợp lệ, nhưng không đảm bảo tín hiệu nào sẽ thắng khi chúng mâu thuẫn nhau — trên thực tế điều này chỉ khiến việc canonicalization của URL đó trở nên không thể đoán trước. Hãy kiểm tra xem có CDN, lớp cache hay plugin nào đang chèn header một cách độc lập với template HTML của bạn hay không, rồi làm cho hai bên khớp nhau.

Tôi có thể dùng hreflang mà hoàn toàn không cần thẻ HTML &lt;link&gt; nào không?

Có — dạng header hoàn toàn tương đương với dạng thẻ, và là cách chuẩn để gán thẻ hreflang cho tài nguyên không phải HTML (ví dụ như PDF) hoặc thêm hreflang vào một phản hồi mà không cần đụng đến template HTML. Các quy tắc vẫn giống nhau: mỗi phiên bản ngôn ngữ nên tự liệt kê chính nó (tự tham chiếu), và nên có x-default một khi bạn có từ hai phiên bản trở lên.

Google có thực sự sử dụng Link response header không?

Có. Tài liệu Google Search Central liệt kê rõ ràng HTTP header là một cách được hỗ trợ để chỉ định cả rel="canonical" lẫn rel="alternate" hreflang, và đặc biệt nêu rõ các file không phải HTML chính là lý do cơ chế này tồn tại.

URL của tôi hoặc nội dung của nó có được lưu trữ ở đâu không?

Không. Việc lấy dữ liệu chỉ diễn ra ở phía máy chủ cho riêng lần kiểm tra này, và kết quả được trả về trực tiếp cho trình duyệt của bạn; không có gì được ghi vào cơ sở dữ liệu hay nhật ký ngoài một bộ đếm giới hạn tần suất.