Google phát hiện và xử lý trang

Discover→ Crawl→ Index→ Serve
Giai đoạnDev có thể làm gì?
DiscoverInternal links, Sitemap
CrawlHTTP / robots.txt, HTML và JS render
IndexNoindex / canonical, HTML và metadata
ServeTitle / snippet, Schema / hreflang
LỖI THƯỜNG GẶP
  • Có sitemap là mọi URL được index.
  • Trả 200 nghĩa là đã có trên Google.
CÁCH LÀM ĐÚNG
  • Google tải và phân tích trước khi index.
  • Serve xảy ra khi người dùng tìm kiếm.

Domain, HTTPS và dạng URL chuẩn

LỖI THƯỜNG GẶP
  • HTTP, HTTPS, www và non-www đều trả 200.
  • /a và /a/ cùng nội dung nhưng tồn tại song song.
  • Domain phụ redirect mọi đường dẫn về homepage.
http://www.example.com/about
CÁCH LÀM ĐÚNG
  • Chọn hostname, HTTPS và quy ước dấu / nhất quán.
  • 301/308 các biến thể về URL chuẩn tương ứng.
  • Link nội bộ, sitemap và canonical cùng một dạng.
https://example.com/about/

Status code và trang không tồn tại

LỖI THƯỜNG GẶP
  • Trang "Not found" vẫn trả HTTP 200.
  • Xóa mọi trang sản phẩm vừa ngừng bán.
  • Lỗi server trên cả nhóm trang bị bỏ sót.
HTTP/1.1 200 OK
<h1>Không tìm thấy trang</h1>
CÁCH LÀM ĐÚNG
  • Trang mất hẳn, không có bản thay thế: 404/410.
  • Giữ 200 nếu trang vẫn có nội dung hữu ích.
  • Giám sát 5xx, kiểm tra theo từng loại template.
HTTP/1.1 404 Not Found
<h1>Không tìm thấy trang</h1>

Redirect và đường dẫn sau migrate

LỖI THƯỜNG GẶP
  • Đổi slug vĩnh viễn nhưng dùng redirect tạm.
  • Chuỗi /a tới /b, rồi /b tới /c.
  • Menu vẫn trỏ URL cũ đang redirect.
/a  301  /b
/b  301  /c
CÁCH LÀM ĐÚNG
  • 301/308 khi đổi vĩnh viễn, 302/307 khi tạm.
  • Cho các URL cũ tới thẳng URL cuối phù hợp.
  • Cập nhật link nội bộ và sitemap về URL cuối.
/a  301  /c
/b  301  /c

robots.txt: kiểm soát crawl

LỖI THƯỜNG GẶP
  • Dùng Disallow để xóa URL khỏi Google.
  • Chặn /assets/ chứa CSS và JavaScript cần render.
  • Mang Disallow: / từ staging lên production.
User-agent: *
Disallow: /assets/
CÁCH LÀM ĐÚNG
  • Dùng robots.txt để điều khiển việc crawl.
  • Cho phép tải tài nguyên cần để hiểu trang.
  • Kiểm tra rule áp dụng cho đúng hostname và bot.
User-agent: *
Disallow: /admin/

noindex: kiểm soát việc index

LỖI THƯỜNG GẶP
  • Chặn crawl rồi chờ Google đọc noindex.
  • Dùng noindex để bảo vệ dữ liệu riêng tư.
  • HTML có noindex, JavaScript mới gỡ bỏ.
CÁCH LÀM ĐÚNG
  • Trang công khai cần noindex phải crawl được.
  • Dùng meta robots hoặc X-Robots-Tag phù hợp.
  • Đặt chỉ thị theo môi trường từ server.
<!-- HTML -->
<meta name="robots" content="noindex">

HTTP header: X-Robots-Tag: noindex

Staging và cấu hình khi deploy

LỖI THƯỜNG GẶP
  • Staging nội bộ mở công khai, chỉ chặn robots.
  • Production giữ noindex của staging.
  • Chỉ kiểm tra homepage sau khi deploy.
APP_ENV=production
X-Robots-Tag: noindex
CÁCH LÀM ĐÚNG
  • Staging riêng tư dùng auth hoặc access control.
  • Tách biến môi trường, kiểm tra bản production.
  • Kiểm tra cả homepage, trang danh sách và trang con.
Staging: HTTP auth / giới hạn IP
Production: đúng index policy

XML sitemap

LỖI THƯỜNG GẶP
  • Có URL redirect, 404 hoặc noindex trong sitemap.
  • Mọi lastmod đổi theo ngày build/deploy.
  • Gửi sitemap rồi coi như đã được index.
CÁCH LÀM ĐÚNG
  • Liệt kê URL chuẩn, trả 200 và muốn được index.
  • lastmod: chính xác, nhất quán với thay đổi thực tế.
  • Khai báo sitemap và kiểm tra khả năng truy cập.
<url>
  <loc>https://example.com/news/story/</loc>
  <lastmod>2026-10-27T09:15:00+07:00</lastmod>
</url>

Google bỏ qua <priority> và <changefreq>.

Canonical và tham số theo dõi

LỖI THƯỜNG GẶP
  • Canonical trỏ staging, 404 hoặc URL redirect.
  • Theme và plugin xuất canonical mâu thuẫn.
  • UTM tạo một canonical riêng cho từng biến thể.
CÁCH LÀM ĐÚNG
  • Đề xuất URL đại diện hoạt động, đủ điều kiện index.
  • Xuất một canonical nhất quán, ưu tiên URL tuyệt đối.
  • Tham số chỉ theo dõi: canonical về URL sạch.
<!-- Trang có ?utm_source=facebook, nội dung không đổi -->
<link rel="canonical" href="https://example.com/blog/story/">

HTML ban đầu và rendered DOM

LỖI THƯỜNG GẶP
  • Nội dung chính chỉ tải khi bấm "Xem thêm".
  • HTML và DOM xuất canonical hoặc robots khác nhau.
  • Chỉ nhìn giao diện browser rồi kết luận bot thấy đủ.
onClick = () => fetchDescription()
CÁCH LÀM ĐÚNG
  • Ưu tiên server output cho nội dung quan trọng.
  • Nếu dùng JS, tải nội dung mà không cần thao tác.
  • Đối chiếu response, DOM và công cụ kiểm tra URL.
Nội dung chính có khi mở URL
Metadata nhất quán sau render

Title và meta description

LỖI THƯỜNG GẶP
  • Theme và plugin cùng xuất description.
  • Mọi trang dùng title mặc định hoặc tên site cũ.
  • CMS có field SEO nhưng template không đọc.
CÁCH LÀM ĐÚNG
  • Mỗi trang một title, một description phù hợp.
  • Đọc field SEO trước, fallback theo dữ liệu trang.
  • Loại bỏ phần xuất trùng, kiểm tra nhiều template.
const title = post.seoTitle || `${post.title} | Brand`;
const description = post.seoDescription || post.excerpt;

Heading và cấu trúc HTML

LỖI THƯỜNG GẶP
  • Card dùng h4 chỉ vì thiết kế muốn chữ nhỏ.
  • Logo là h1 trên mọi trang, lẫn với tiêu đề chính.
  • Tên trang chỉ là div, heading lồng trong heading.
<h4 class="card-title">Tin mới</h4>
<!-- Chọn h4 chỉ vì font nhỏ -->
CÁCH LÀM ĐÚNG
  • Chọn heading theo cấu trúc section chứa nội dung.
  • Quy ước team: một h1 chính, CSS chỉnh cỡ chữ.
  • Heading mô tả phân cấp, markup hợp lệ.
<h2>Tin liên quan</h2>
<h3 class="card-title">Tin mới</h3>

Ảnh nội dung và thuộc tính alt

LỖI THƯỜNG GẶP
  • Ảnh nội dung thiếu alt hoặc dùng tên file làm alt.
  • Icon trang trí bị nhồi từ khóa.
  • Ảnh chỉ xuất hiện như background hoặc sau thao tác.
CÁCH LÀM ĐÚNG
  • Ảnh có thông tin dùng img, alt theo ngữ cảnh.
  • Ảnh thuần trang trí dùng alt="" khi phù hợp.
  • URL ảnh truy cập được, bot tìm thấy qua markup.
<img src="/uploads/team.jpg" alt="Đội ngũ tại văn phòng Sydney">
<img src="/icons/arrow.svg" alt="">

Structured data: dữ liệu phải đúng

LỖI THƯỜNG GẶP
  • Schema dùng URL staging hoặc ngày hiện tại.
  • Theme/plugin xuất dữ liệu mâu thuẫn.
  • JSON-LD hợp lệ là chắc chắn có rich result.
CÁCH LÀM ĐÚNG
  • Chọn type đúng, map dữ liệu thật của trang.
  • Giá, đánh giá, tác giả và ngày khớp nội dung.
  • Kiểm tra cú pháp và yêu cầu tính năng Google.
"datePublished": "2026-10-27T09:15:00+07:00",
"dateModified":  "2026-10-28T10:00:00+07:00"

Schema nên kiểm tra theo loại trang

Chọn theo loại trang, không phải bộ schema bắt buộc cho mọi website.

SchemaLỗi thường gặpCách làm đúng
WebSiteThiếu tên website ở homepage.Homepage: tên và URL site.
OrganizationHai tên hoặc logo mâu thuẫn.Homepage/About: đơn vị, logo, liên hệ đúng.
BreadcrumbListURL cũ hoặc phân cấp không khớp website.Đúng phân cấp và URL chuẩn.
Article / subtypeMọi trang đều là Article, ngày đăng đổi mỗi lần tải.Bài viết: Article, NewsArticle hoặc BlogPosting phù hợp.
LocalBusinessGắn cho mọi website, địa chỉ không đúng.Địa điểm kinh doanh thực tế, dùng subtype phù hợp.
ProductGiá hoặc tình trạng hàng khác nội dung trang.Trang sản phẩm, dữ liệu bán hàng thật.

Đa ngôn ngữ: URL, lang và metadata

LỖI THƯỜNG GẶP
  • Đổi ngôn ngữ trên cùng URL chỉ bằng cookie.
  • Layout cố định lang="en" cho bản tiếng Việt.
  • Meta và link nội bộ vẫn dùng dữ liệu bản gốc.
Một URL, đổi nội dung theo cookie
CÁCH LÀM ĐÚNG
  • Mỗi bản có URL riêng, truy cập độc lập.
  • html lang khớp ngôn ngữ nội dung.
  • Metadata và navigation theo đúng locale.
/en/about/
/vi/about/
<html lang="vi">

Hreflang, canonical và sitemap

LỖI THƯỜNG GẶP
  • Chỉ EN trỏ VI, thiếu liên kết ngược.
  • Bản VI canonical về EN dù là bản dịch độc lập.
  • Mọi hreflang trỏ homepage hoặc URL chưa tồn tại.
CÁCH LÀM ĐÚNG
  • Mỗi bản có self và return links đúng cặp trang.
  • Bản dịch độc lập thường canonical về chính nó.
  • Sitemap chứa URL chuẩn của các bản muốn index.
<link rel="alternate" hreflang="vi" href="https://example.com/vi/about/">
<link rel="alternate" hreflang="en" href="https://example.com/en/about/">

Bảo trì website trong thời gian ngắn

LỖI THƯỜNG GẶP
  • Trang bảo trì trả 200 thay nội dung mọi trang.
  • Tạm trả 404 hoặc redirect toàn site về homepage.
  • Trả 503 cho cả robots.txt.
CÁCH LÀM ĐÚNG
  • Trang tạm không phục vụ được: trả 503.
  • Có thể kèm Retry-After, hiển thị thông báo rõ.
  • Giữ robots.txt hoạt động, khôi phục sau bảo trì.
HTTP/1.1 503 Service Unavailable
Retry-After: 7200

Kiểm tra SEO sau deploy

LỖI THƯỜNG GẶP
  • Chỉ mở homepage bằng browser rồi kết luận xong.
  • Sửa code nhưng chưa kiểm tra HTML/headers thật.
  • Request indexing nghĩa là chắc chắn được index.
CÁCH LÀM ĐÚNG
  • Kiểm tra URL đại diện của từng loại trang.
  • Xác minh status, robots, canonical và rendered DOM.
  • Dùng URL Inspection của Google và Bing để đối chiếu.

Kiểm tra URL thật, rồi theo dõi crawl/index lại.
Live test và dữ liệu đã index là hai nguồn khác nhau.
Google: kiểm tra nosnippet / max-snippet:0.
Search Console: Settings > Search generative AI > Include.