← Tất cả cẩm nang

Auto-detecting visitor location: when to redirect vs when to ask

Geolocation và SEO: tránh bị Google phạt do redirects

Cách tôn trọng HTTP headers của Googlebot, tránh redirect loops, và giữ cho store khu vực của bạn có thể crawl được.

Một chủ cửa hàng Shopify triển khai geolocation redirects cho khách hàng quốc tế của họ. Conversion tăng trong hai tuần đầu. Rồi organic traffic bắt đầu giảm. Đến tháng thứ ba, họ mất 23% search visibility và không hiểu tại sao. Những redirects này được cho là giúp khách hàng quốc tế lại im lặng chặn Google crawl được một nửa site của họ.

Đây không phải một trường hợp hiếm. Đó là một trong những lỗi SEO phổ biến nhất trong ecommerce quốc tế, xảy ra vì geolocation và search engine crawling hoạt động dựa trên những giả định cơ bản khác nhau. Khách của bạn là con người có vị trí địa lý. Googlebot là một crawler không có vị trí—và nếu bạn xử lý nó như một khách thông thường, bạn sẽ phá vỡ rankings của riêng mình.

Tóm tắt nhanh
  • Google cảnh báo rõ ràng không nên auto-redirect dựa trên vị trí người dùng được cảm nhận---nó ngăn crawlers indexing toàn bộ phiên bản của site
  • Googlebot chủ yếu crawl từ các IP address ở Mỹ và không theo dõi geo-redirects như cách một khách hàng thông thường sẽ làm
  • Hreflang tags báo cho Google về trang khu vực của bạn mà không dựa vào redirects---chúng rất cần thiết cho bất kỳ store đa khu vực nào
  • Redirect loops giữa các phiên bản khu vực là cách nhanh nhất để các trang bị loại khỏi Google index
  • Shopify Markets xử lý hreflang tự động, nhưng custom JavaScript redirects có thể ghi đè và phá vỡ điều này

Tại sao Google phạt geo-redirects

Tài liệu international targeting của Google rất trực tiếp về vấn đề này: “Tránh automatic redirection dựa trên ngôn ngữ được cảm nhận của người dùng. Những redirects này có thể ngăn người dùng (và search engines) xem toàn bộ phiên bản của site của bạn.”

Lý do là cơ học. Googlebot chủ yếu crawl từ các data centers ở Hoa Kỳ. Khi hệ thống geolocation của bạn phát hiện một IP address Mỹ và redirect tới phiên bản /us/ của store, Googlebot chỉ khi nào cũng thấy phiên bản Mỹ. Các phiên bản /uk/, /de/, /fr/, và /au/ của bạn không bao giờ được crawl từ điểm vào đó. Nếu những trang này chỉ có thể tiếp cận qua geo-redirects chứ không phải qua internal links hoặc sitemaps, Google có thể không bao giờ khám phá được chúng.

Kết quả là trang US của bạn tích lũy toàn bộ ranking signals—backlinks, engagement data, crawl history—trong khi trang khu vực của bạn nằm trong một crawl vacuum. Khi ai đó ở Đức tìm kiếm sản phẩm mà bạn bán, Google có thể hiển thị cho họ trang Mỹ (nếu nó rank) hoặc không có gì (nếu trang khu vực được cho là rank nhưng không bao giờ được indexed).

Đây không phải kỹ thuật một “penalty” theo nghĩa là một manual action từ spam team của Google. Nó còn tệ hơn: đó là một indexing failure tạo ra những triệu chứng tương tự—lost traffic, missing pages, ranking drops—nhưng không có thông báo nào trong Search Console. Bạn không nhận được cảnh báo. Trang của bạn chỉ không xuất hiện.

Googlebot xử lý language và location như thế nào

Hiểu rõ những gì Googlebot thực sự làm khi gặp store của bạn làm sáng tỏ tại sao một số triển khai thất bại.

Googlebot không có vị trí địa lý. Nó crawl từ các IP addresses dựa trên Mỹ và không mô phỏng việc ở các quốc gia khác nhau. Khi nó yêu cầu một trang, nó gửi các HTTP headers tiêu chuẩn, bao gồm một Accept-Language header thường được đặt thành en-US hoặc en.

Googlebot không thực thi toàn bộ JavaScript. Mặc dù rendering engine của Google có thể thực thi JavaScript, nó làm vậy trên một lịch trình trì hoãn và có thể không kích hoạt client-side redirect logic giống như cách một trình duyệt làm. Một JavaScript-based geolocation redirect có thể bắt lửa cho khách hàng con người nhưng không cho Googlebot, tạo ra một split nơi con người thấy một phiên bản và Google indexes một phiên bản khác.

Googlebot theo dõi redirects, nhưng không vô hạn. Nếu geolocation logic của bạn tạo ra một redirect chain (homepage redirects tới /us/, /us/ redirects lại tới homepage vì Accept-Language của crawler nói là English), Google có thể bỏ cuộc và loại trang khỏi index hoàn toàn. Redirect loops là một trong những vấn đề technical SEO phổ biến nhất được gắn cờ trong Google Search Console cho các site quốc tế.

Googlebot sử dụng hreflang tags để khám phá phiên bản khu vực. Đây là cơ chế dự định để báo cho Google về trang khu vực của bạn. Thay vì redirect crawler tới phiên bản đúng, bạn báo cho Google rằng các phiên bản khác tồn tại và để nó crawl từng cái một cách độc lập.

Hreflang: cách đúng để xử lý trang khu vực

Hreflang tags là các chú thích HTML báo cho search engines “trang này có các phiên bản thay thế ở các ngôn ngữ khác hoặc cho các khu vực khác.” Chúng nằm trong <head> của mỗi trang hoặc trong XML sitemap.

Một product page trên store Mỹ của bạn sẽ bao gồm:

<link rel="alternate" hreflang="en-us" href="https://store.com/products/widget" />
<link rel="alternate" hreflang="en-gb" href="https://store.com/uk/products/widget" />
<link rel="alternate" hreflang="de" href="https://store.com/de/products/widget" />
<link rel="alternate" hreflang="x-default" href="https://store.com/products/widget" />

Tag x-default báo cho Google phiên bản nào cần hiển thị khi không có match khu vực cụ thể nào. Đây thường là main/default store của bạn.

Điều mà hreflang đạt được mà redirects không thể:

  • Google crawls và indexes mỗi phiên bản khu vực một cách độc lập
  • Mỗi phiên bản tích lũy các ranking signals của riêng nó
  • Google phục vụ phiên bản khu vực thích hợp trong kết quả tìm kiếm dựa trên vị trí và cài đặt ngôn ngữ của người tìm kiếm
  • Không có crawler nào bị chặn khỏi truy cập bất kỳ phiên bản nào

Shopify Markets tạo hreflang tags tự động khi bạn cấu hình markets với subdirectories hoặc subdomains. Đây là một trong những lý do mạnh mẽ nhất để sử dụng internationalization native của Shopify thay vì xây dựng custom redirect logic. Triển khai hreflang là chính xác ngay từ hộp và cập nhật tự động khi bạn thêm sản phẩm hoặc markets.

Cảnh báo rất quan trọng: nếu bạn layer custom JavaScript redirects trên Shopify Markets, các redirects có thể bắt lửa trước khi Google đọc hreflang tags. Crawler bị redirect đi từ trang trước khi nó phân tích cú pháp <head>, vì vậy các hreflang annotations không bao giờ được xử lý. Đây là cách duy nhất phổ biến nhất mà các store vô tình phá vỡ một hreflang setup đúng.

Lỗi phổ biến và cách khắc phục

Redirecting crawlers cùng với khách hàng

Lỗi: Geolocation logic của bạn không phân biệt giữa khách hàng con người và search engine crawlers. Mỗi yêu cầu từ một IP Mỹ đều đi tới /us/, kể cả Googlebot.

Cách khắc phục: Kiểm tra user agent string trước khi áp dụng geo-redirects. Googlebot tự xác định trong User-Agent header. Nếu yêu cầu đến từ một crawler đã biết, phục vụ trang mà không redirect. Đây không phải cloaking—Google rõ ràng khuyến nghị nó trong hướng dẫn international targeting của họ.

Trong thực hành, duy trì một danh sách các known crawler user agents (Googlebot, Bingbot, v.v.) và bỏ qua geolocation logic cho các yêu cầu đó. Trên Shopify, điều này dễ nhất để triển khai ở lớp CDN/edge (Cloudflare Workers) hơn là trong Liquid hoặc JavaScript.

Sử dụng 302 redirects thay vì 301

Lỗi: Geo-redirects của bạn sử dụng 302 (temporary) status codes, nói với Google “redirect này là tạm thời, tiếp tục indexing URL gốc.” Google có thể index cả hai phiên bản, chia splitting ranking signals giữa chúng.

Cách khắc phục: Nếu redirect là permanent (một khách từ Đức luôn nên thấy phiên bản /de/), sử dụng 301 redirect. Nếu redirect là conditional và có thể thay đổi (khách có thể chuyển khu vực), sử dụng 302 nhưng kết hợp nó với hreflang tags thích hợp vì vậy Google không phải dựa vào redirect để khám phá.

Trong hầu hết các trường hợp, geo-redirects nên là 302 vì chúng là conditional trên vị trí của khách, không permanent. Nhưng điều này có nghĩa là bạn hoàn toàn cần hreflang tags để xử lý phía indexing. Dựa vào 302 redirects để Google khám phá trang khu vực của bạn sẽ không hoạt động.

Thiếu hreflang trên trang khu vực

Lỗi: Bạn triển khai hreflang trên main store của bạn nhưng quên thêm reciprocal hreflang tags trên các phiên bản khu vực. Hreflang phải là bidirectional—nếu trang A nói “phiên bản German của tôi là trang B,” trang B cũng phải nói “phiên bản English của tôi là trang A.”

Cách khắc phục: Kiểm toán mỗi phiên bản khu vực của mỗi trang để xác nhận hreflang bidirectional. Trong Shopify Markets điều này là tự động, nhưng nếu bạn sử dụng custom themes hoặc headless setups, missing reciprocal tags rất phổ biến. Google Search Console’s International Targeting report gắn cờ hreflang errors—kiểm tra nó hàng tháng.

JavaScript redirects bắt lửa trước server-side hreflang

Lỗi: Theme của bạn hoặc một third-party app bao gồm một JavaScript snippet phát hiện location và redirects khách trước khi trang fully renders. Googlebot có thể hoặc không thể thực thi JavaScript này, tạo ra inconsistency giữa những gì Google indexes và những gì khách thấy.

Cách khắc phục: Loại bỏ client-side geo-redirect JavaScript hoàn toàn. Xử lý geolocation ở server hoặc edge level (Cloudflare Workers, Shopify Markets, hoặc edge functions của nhà cung cấp hosting của bạn). Server-side detection xảy ra trước khi HTML được gửi, vì vậy hreflang tags và page content vẫn nhất quán bất kể yêu cầu đến từ crawler hay khách.

SEO health checkMở Google Search Console, điều hướng tới International Targeting report, và kiểm tra hreflang errors. Sau đó tìm kiếm Google cho "site:yourstore.com" và so sánh indexed pages với cấu trúc khu vực dự kiến của bạn. Nếu trang khu vực bị thiếu khỏi index, setup geolocation của bạn có thể đang can thiệp vào crawling.

Giữ cho store khu vực có thể crawl được

Ngoài hreflang và redirect handling, một vài thực hành cấu trúc đảm bảo Google có thể khám phá và index toàn bộ nội dung khu vực của bạn.

Internal linking trên các khu vực. Navigation chính, footer, hoặc sitemap page của bạn nên link tới toàn bộ phiên bản khu vực của store. Các links này cho Googlebot các đường dẫn trực tiếp tới nội dung khu vực mà không dựa vào geo-detection.

XML sitemaps trên mỗi khu vực. Nộp các sitemaps riêng cho mỗi store khu vực trong Google Search Console. Mỗi sitemap nên liệt kê toàn bộ trang cho khu vực đó và bao gồm hreflang annotations. Shopify tạo sitemaps tự động, nhưng xác minh rằng toàn bộ markets được đại diện.

Canonical tags. Mỗi trang khu vực nên có một self-referencing canonical tag chỉ tới chính nó, không phải tới phiên bản “chính.” Một lỗi phổ biến là thiết lập canonical của mỗi trang khu vực tới phiên bản Mỹ, báo cho Google bỏ qua trang khu vực hoàn toàn.

Sự tương tác giữa geolocation và SEO xuất phát từ một nguyên tắc đơn giản: giúp Google khám phá trang khu vực của bạn qua metadata và links, không phải qua redirects. Redirects là cho con người. Metadata là cho crawlers. Khi bạn sử dụng Navi+ hoặc các công cụ tương tự để xây dựng navigation bao gồm regional switching, các internal links mà những menu đó tạo ra cũng phục vụ như crawl paths—một lý do khác tại sao layer navigation quan trọng cho international SEO ngoài chỉ trải nghiệm khách hàng.

Bài viết này là một phần của hướng dẫn lớn hơn về Auto-detecting visitor location: when to redirect vs when to ask.

Chia sẻ Facebook X

Bắt đầu với Navi+ AI Menu Builder

Chọn nền tảng của bạn — miễn phí cài đặt, hoạt động trong vài phút.