Goal: SEO-friendly muti-country mono-language web with common contents across countries that need local links

I have to build a SEO-optimized website with:

  • MULTI-country (multiple Spanish-speaking countries)
  • MONO-language (all them in Spanish)

Country structure

When there's country-dependant content, the country URL structure will be subfolder. For example Spain will be /es/, Colombia /co/, Mexico /mx/ and so on.

Page categories

There are 2 big categories of pages:

  • Local content for some cities. For example shops in Barcelona (Spain), Barranquilla (Colombia) or Tijuana (Mexico).
  • Global content (articles in Spanish that are common to all countries).

URL structure for LOCAL pages

There are cities whose name is "repeated" in multiple countries but they refer to different city:

Therefore I'll use this scheme: /country/city/city-level-content-for-example-shops

  • www.example.com/es/guadalajara/local-content-here-for-spain-guadalajara
  • www.example.com/mx/guadalajara/local-content-here-for-mexico-guadalajara

Up to here no problem

The problem: The global content

But I have GLOBAL content that will meet these criteria:

  • It's common to all countries (it's not tuned to every country, it's global).
  • The content will have, below the "main global text", a set of links to the local content related to that global content. For example if I talk about a book, links to local libraries.

I have 2 possible strategies:

No geo separation for the global content

  • www.example.com/global-content-here-with-local-links-conditional-server-side-with-ip-location

With this approach, I'll have to display the local links doing server-logic, doing some sort of IP geo-location and guess if the person is in Mexico or Spain or Colombia and place one link or another.

PROBLEM: This would potentially confuse crawler bots getting only a portion of the links and not understanding the structure.

Do content-duplication for the global content just to change the links

  • www.example.com/es/barcelona/global-content-here-with-local-links-to-spain-barcelona
  • www.example.com/es/guadalajara/global-content-here-with-local-links-to-spain-guadalajara
  • www.example.com/mx/tijuana/global-content-here-with-local-links-to-mexico-tijuana
  • www.example.com/mx/guadalajara/global-content-here-with-local-links-to-mexico-guadalajara

Here the structure will be perfect for the crawlers.

PROBLEM: The main content will be N*M-duplicated if there are N countries and M cities in each country, and it's commonly known that duplicating content penalizes a lot.

Possible solutions?

I think it's not about using hreflang as it's not about the LANGUAGE but the COUNTRY and/or COUNTRY+CITY. All the content is in Spanish.


What's the SEO-friendly correct way of handling this situation?

  • Google does not penalize a page or the website for duplicative content. Googlebot basically ignores the subsequent or non-canonical versions that it comes across (or at least it does most of the time).
    – I Capulet
    Commented Aug 28, 2020 at 0:04

3 Answers 3


You can use city-specific URLs if you are targeting multi-county and multi-city markets. It's a clearly to tell google your geo targeting site structures. Though I would suggest you not to use duplicate content for various cities, but to edit the content to be location specific.

For your global content, you can simply set up a default page and use hreflang tag as hreflang="x-default". If your visitor is not from your targeted cities, it will auto show the default global content in the search engine results.


If your concern is whether Googlebot will come to learn the "global" and "local" structures of the site, then itemize each version in your XML site map, add/inject the appropriate hreflang tags to the head section of each page, and use breadcrumbs (https://developers.google.com/search/docs/data-types/breadcrumb) to further indicate how the pages relate to one another structurally.

A local page's breadcrumbs structured data could be like:

"@context": "https://schema.org",
"@type": "BreadcrumbList",
  "itemListElement": [{
    "@type": "ListItem",
    "position": 1,
    "name": "Homepage",
    "item": "[url]"
    "@type": "ListItem",
    "position": 2,
    "name": "Mexico",
    "item": "[url]"
    "@type": "ListItem",
    "position": 3,
    "name": "guadalajara",
    "item": "[url]"

Also, you should also add links that reflect the typical navigation to page in its local structure somewhere on the page as well (https://www.w3.org/TR/WCAG20-TECHS/G65.html):

**Homepage** > **Mexico** > Guadalajara 
                               ^ leave the self-referencing one as text though

For Global pages, it sounds like they follow the "Global > [page]" schematization so have their breadcrumbs reflect that fact.


The content will have, below the "main global text", a set of links to the local content related to that global content. For example if I talk about a book, links to local libraries.

With local content, do the opposite: for example, when talking about a book in the library, link about that book in the global content. This will create linked data between the book and the libraries where the book is available.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.