Technical SEO
Tài liệu này hướng dẫn SEO kỹ thuật cho carmall.vn: robots, index/noindex, sitemap, canonical, chuyển hướng, status code, schema, hiệu năng, mobile và URL.
Chưa xử lý: khi triển khai đa ngôn ngữ (
vi/enquanext-intl), tài liệu này cần bổ sunghreflang/alternates.languages, canonical theo từng locale và sitemap có alternate URL.
Mục tiêu
- Đảm bảo search engine crawl, render, index đúng các trang công khai của
web-user. - Ngăn các trang cá nhân, staging, preview, admin hoặc URL rác xuất hiện trên kết quả tìm kiếm.
- Giảm trùng lặp URL do bộ lọc, phân trang, query tìm kiếm và nhiều biến thể sản phẩm.
- Tạo nền tảng kỹ thuật ổn định để on-page, local và thương mại điện tử SEO phát huy hiệu quả.
Khi nào dùng
- Trước khi đưa
carmall.vnlên môi trường chính thức. - Sau mỗi lần thay đổi route, sitemap, metadata, schema, bộ lọc, phân trang hoặc cấu trúc URL.
- Khi Search Console báo lỗi index, duplicate, canonical, crawl hoặc structured data.
- Khi traffic tự nhiên giảm bất thường sau một lần phát hành.
Checklist
| Hạng mục | Yêu cầu cho CarMall |
|---|---|
| Robots | Môi trường chính thức không chặn toàn site; staging/preview được chặn |
| Index | Trang chủ, sản phẩm, dịch vụ, danh mục, thương hiệu, đại lý, blog, khuyến mãi được index |
| Noindex | Hồ sơ, đơn hàng, lịch hẹn, thông báo, cài đặt và trang bảo vệ không được index |
| Sitemap | /sitemap.xml dùng domain https://carmall.vn và không chứa URL rác |
| Canonical | Mỗi trang công khai có canonical đúng URL sạch |
| Chuyển hướng | HTTP, www/non-www, dấu gạch cuối URL thống nhất |
| Status code | URL hợp lệ trả 200; URL mất trả 404; chuyển hướng trả 301/308 |
| Schema | JSON-LD khớp nội dung hiển thị thật |
| Hiệu năng | Không có lỗi Core Web Vitals nghiêm trọng trên mobile |
| Render | Nội dung chính, metadata và schema không phụ thuộc hoàn toàn vào thao tác phía trình duyệt |
Quy trình từng bước
-
Kiểm tra robots.
- Mở
apps/web-user/src/app/robots.ts. - Với môi trường chính thức, không được để cấu hình chặn toàn bộ bằng
Disallow: /. - Với staging/preview, được chặn index để tránh lộ nội dung thử nghiệm.
- Mở
-
Kiểm tra index/noindex.
- Trang công khai quan trọng phải cho phép index.
- Trang cần đăng nhập phải có
noindexhoặc bị bảo vệ thật bằng đăng nhập. - Không dùng
noindexđể xử lý trùng lặp URL trong cùng một site; dùng canonical hoặc chuyển hướng.
-
Kiểm tra sitemap.
- Mở
/sitemap.xml. - Đảm bảo có trang tĩnh và trang động: sản phẩm, dịch vụ, blog, đại lý, thương hiệu.
- Loại URL staging, URL lỗi, URL
noindex, URL có query filter rác. - Submit sitemap lên Google Search Console.
- Mở
-
Kiểm tra canonical.
- Trang chi tiết sản phẩm canonical về
/san-pham/[slug]. - Trang chi tiết dịch vụ canonical về
/dich-vu/[slug]. - Trang blog canonical về
/tin-tuc/[slug]. - Trang đại lý canonical về
/dai-ly/[slug]. - Trang danh sách chính canonical về URL sạch như
/san-pham,/dich-vu. - URL bộ lọc chỉ index khi được thiết kế như trang đích SEO riêng.
- Trang chi tiết sản phẩm canonical về
-
Kiểm tra chuyển hướng và status code.
- Domain chuẩn phải thống nhất:
https://carmall.vn. - HTTP phải chuyển sang HTTPS.
- Nếu dùng non-www thì www phải chuyển về non-www, hoặc ngược lại theo quyết định hạ tầng.
- Slug cũ đã đổi phải chuyển hướng về slug mới nếu trang còn tương đương.
- Domain chuẩn phải thống nhất:
-
Kiểm tra schema.
- Trang chủ: Organization, WebSite.
- Sản phẩm: Product, Offer, BreadcrumbList, Review nếu có dữ liệu thật.
- Dịch vụ: Service, Offer, BreadcrumbList.
- Đại lý: LocalBusiness hoặc AutoDealer.
- Blog: Article, BreadcrumbList.
- FAQ: FAQPage nếu câu hỏi/câu trả lời hiển thị thật.
-
Kiểm tra hiệu năng và mobile.
- Ảnh chính có kích thước ổn định.
- Nội dung đầu trang không bị header cố định che mất.
- JavaScript, CSS và ảnh quan trọng không bị robots chặn.
- Không để trang danh sách/sản phẩm trắng trong lần render đầu tiên.
Ví dụ áp dụng vào carmall.vn
| Tình huống | Cách xử lý |
|---|---|
robots.ts đang Disallow: / | Trước môi trường chính thức phải đổi sang cho phép crawl trang công khai |
/san-pham?brands=michelin&minPrice=1000000&page=2 | Canonical riêng nếu là trang phân trang cần crawl; canonical về /san-pham nếu chỉ là filter trải nghiệm |
/san-pham/lop-michelin-x đổi slug | Chuyển hướng 301/308 sang slug mới nếu sản phẩm vẫn là cùng nội dung |
| Trang hồ sơ cá nhân | noindex, không đưa vào sitemap |
| Trang chi tiết đại lý | Thêm LocalBusiness/AutoDealer schema nếu có tên, địa chỉ, hotline, tọa độ hoặc khu vực phục vụ |
Lỗi thường gặp
- Đưa môi trường chính thức lên với
Disallow: /. - Sitemap dùng URL localhost hoặc staging.
- Sitemap chứa URL filter rác.
- Canonical trỏ về staging hoặc canonical tất cả phân trang về trang 1.
- Trang chi tiết sản phẩm có metadata chung chung giống nhau.
- Schema khai báo giá, đánh giá hoặc tình trạng hàng không khớp nội dung hiển thị.
- Trang cần index nhưng nội dung chính chỉ xuất hiện sau khi người dùng thao tác.
Cách kiểm tra kết quả
- Mở
/robots.txtvà/sitemap.xmlsau khi build. - Dùng Search Console URL Inspection cho trang chủ, sản phẩm, dịch vụ, đại lý, blog.
- Dùng Rich Results Test để kiểm tra schema.
- Dùng PageSpeed Insights cho trang chủ, danh sách sản phẩm, chi tiết sản phẩm, chi tiết dịch vụ.
- Dùng một crawler để rà status code, canonical, title, description, H1 và link nội bộ.
Tài liệu tham khảo chính thức
- Google SEO Starter Guide: https://developers.google.com/search/docs/fundamentals/seo-starter-guide
- Google canonical: https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls
- Google robots meta: https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag
- Google sitemap: https://developers.google.com/search/docs/crawling-indexing/sitemaps/overview
- Google pagination: https://developers.google.com/search/docs/specialty/ecommerce/pagination-and-incremental-page-loading