URL Canonical, lingue, mercati

Buongiorno,

abbiamo recentemente introdotto un sistema di rilevazione automatica del mercato in cui si trova l’utente utilizzando la geolocalizzazione. Questo sistema si aggiunge alla gestione delle 7 lingue del sito, una lingua predefinita (en) e 6 traduzioni, e utilizza le sottocartelle per la gestione degli URL per le diverse lingue e mercati.

Tuttavia, dai dati di accesso e dagli strumenti di SEO, è emerso che questa modifica ha causato problemi con i motori di ricerca.

Ad esempio: sul db uk di google, le pagine in inglese destinate al mercato USA stavano gradualmente sostituendo le rispettive pagine “canonical” (o meglio quelle che io credevo fossero canonical). In pratica, tutte le pagine più importanti in lingua inglese (ovvero quelle con il maggior traffico organico) sono state sostituite dalle pagine destinate al mercato USA (/en-us/) o a da quelle per il mercato maltese (/en-mt/).

Anche se in proporzione meno preoccupante la stessa cosa accade un po’ in tutti mercati/lingue.

Andando ad analizzare il codice HTML della pagina ci siamo resi conto che tutte le pagine in tutte le lingue e destinate a tutti i mercati si auto-dichiarano “canonical”.

Nel codice del tema ho trovato la seguente istruzione:

Che nella scrittura del codice HTML per la pagina in inglese per il mercato americano (quindi con sottocartella /en-us/) viene trasposto come segue:

io invece credo che debba essere (forse sarebbe più giusto dire: “vorrei che fosse”) come segue:

quindi senza la subdir /lingua-mercato/ per la lingua inglese, ricordo che l’inglese è lingua predefinita.

Seguendo lo stesso esempio la pagina nella la sottocartella /it-fr/ dovrebbe indicare come canonica la pagina nella sottocartella /it/.

Ho spulciato tutte le impostazioni nelle varie sezioni, mercato, lingue, etc, etc. Non ho trovato nulla. A questo punto, forse, l’unica soluzione è agire sul codice del tema…

Avete consigli?

Grazie,

Marco

scusate se mi rispondo da solo :grin: ,

mentre aspettavo ho fatto un po’ di esperimenti ed ho scritto il seguente blocco:

{% comment %} MODIFICATO DA MARCO IN DATA 22/2/23 {% endcomment %}
      {% if template contains 'collection' %}
        {% assign can_url = collection.url %} 
        {% assign temp_url = can_url | split: '/' | last %}
       {% assign coll_url = '/collections/' %}
      {% assign slash_url = '/'%} 
    {% assign locale_url = shop.locale | prepend: slash_url %}
        {% if locale_url contains 'en' %} 
          {% assign locale_url = '' %}
          {% endif %}
  
          {% endif %}
      {% if template contains 'product' %}
        {% assign can_url = product.url %} 
        {% assign temp_url = can_url | split: '/' | last %}
       {% assign prod_url = '/products/' %}
      {% assign slash_url = '/'%} 
    {% assign locale_url = shop.locale | prepend: slash_url %}
        {% if locale_url contains 'en' %} 
          {% assign locale_url = '' %}
          {% endif %}
  
          {% endif %}
            {% if template contains 'page' %}
        {% assign can_url = page.url %} 
        {% assign temp_url = can_url | split: '/' | last %}
       {% assign page_url = '/pages/' %}
      {% assign slash_url = '/'%} 
    {% assign locale_url = shop.locale | prepend: slash_url %}
        {% if locale_url contains 'en' %} 
          {% assign locale_url = '' %}
          {% endif %}
  
          {% endif %}
            {% if template contains 'blog' %}
        {% assign can_url = blog.url %} 
        {% assign temp_url = can_url | split: '/' | last %}
       {% assign blog_url = '/blogs/' %}
      {% assign slash_url = '/'%} 
    {% assign locale_url = shop.locale | prepend: slash_url %}
        {% if locale_url contains 'en' %} 
          {% assign locale_url = '' %}
          {% endif %}
  
          {% endif %}

Ho provato su un template di backup e sembra funzionare, in questo modo risolvo pure il problema del numero di pagina delle collezioni.

Visto che io non sono un programmatore è probabile che la mia soluzione sia un po’ rozza…

se avete voglia di correggere lo stile e renderlo un po’ più elegante i consigli sono ben accetti.

Grazie.

1 Like