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/en qua next-intl), tài liệu này cần bổ sung hreflang/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.vn lê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ụcYêu cầu cho CarMall
RobotsMôi trường chính thức không chặn toàn site; staging/preview được chặn
IndexTrang chủ, sản phẩm, dịch vụ, danh mục, thương hiệu, đại lý, blog, khuyến mãi được index
NoindexHồ 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
CanonicalMỗi trang công khai có canonical đúng URL sạch
Chuyển hướngHTTP, www/non-www, dấu gạch cuối URL thống nhất
Status codeURL hợp lệ trả 200; URL mất trả 404; chuyển hướng trả 301/308
SchemaJSON-LD khớp nội dung hiển thị thật
Hiệu năngKhông có lỗi Core Web Vitals nghiêm trọng trên mobile
RenderNộ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

  1. 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.
  2. 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ó noindex hoặ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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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ốngCá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=2Canonical 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 slugChuyể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ânnoindex, 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.txt/sitemap.xml sau 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