PS PrestaShop Intermedio

Offuscamento Link SEO per PrestaShop

Installazione, configurazione dei preset, scrittura dei selettori CSS e verifica di ciò che ricevono i crawler.

Aggiornato Versione del modulo 1.0.0

Questa guida copre installazione, configurazione e verifica del modulo dfobfuscator su PrestaShop 8 e 9.

Installazione

  1. Andate su Moduli e Servizi, Carica un modulo nel vostro back-office.
  2. Rilasciate il file dfobfuscator.zip e confermate.
  3. Cliccate su Configura a installazione completata.

Il modulo si registra su due hook: actionOutputHTMLBefore per la riscrittura dell’HTML e actionFrontControllerSetMedia per il caricamento degli asset del front. Non viene creato alcun override di file core.

L’estensione PHP DOM deve essere attiva. Lo è per impostazione predefinita su quasi tutti gli hosting. In sua assenza il modulo resta installato ma lascia l’HTML invariato.

Configurazione

Attivare l’offuscamento

L’interruttore principale disattiva tutta la riscrittura senza disinstallare il modulo. Utile per confrontare il codice sorgente prima e dopo, o per isolare il modulo durante una diagnosi.

I tre preset

Preset Cosa seleziona Predefinito
Navigazione a faccette I blocchi di filtri e l’elenco dei filtri attivi Attivo
Ordinamento prodotti Il menu a tendina di ordinamento Attivo
Paginazione I link alla pagina 2, 3 e successive Disattivo

Attivate la paginazione solo se la vostra sitemap XML e i vostri link interni rendono ogni scheda prodotto raggiungibile in altro modo. Altrimenti tagliate l’unico percorso di scansione verso una parte del catalogo.

Selettori CSS personalizzati

Un selettore per riga. Sono accettate anche le virgole su una stessa riga. Ogni link che corrisponde a un selettore viene offuscato.

#footer .account-links a
.block-tags a
.my-custom-block a[data-filter]

Il convertitore interno supporta il tag, l’identificatore, la classe, gli attributi (presenza o valore esatto), il combinatore discendente e il combinatore figlio diretto. Se il vostro negozio include symfony/css-selector nel suo vendor, il modulo lo usa in via prioritaria e disponete allora della sintassi CSS completa.

Righe XPath

Per le selezioni che il CSS non permette di esprimere, anteponete xpath: alla riga:

xpath://div[@id='js-product-list']//a[contains(@href,'?order=')]

Controller esclusi

Elenco di nomi di controller front separati da virgole. Su quelle pagine non avviene alcuna riscrittura e gli asset non vengono caricati. Valore predefinito: order,cart. Aggiungetevi qualsiasi controller il cui percorso non debba dipendere da JavaScript.

Come funziona la riscrittura

Sull’hook actionOutputHTMLBefore il modulo riceve l’HTML completo della pagina. Verifica prima che si tratti di un documento HTML intero, il che esclude le risposte AJAX e JSON. Carica poi il documento in DOMDocument, converte ogni selettore in una query XPath e sostituisce i link trovati con elementi span.

Ogni elemento offuscato riceve:

  • un attributo data-o contenente l’URL in base64 invertito;
  • la classe df-obf oltre alle sue classi originali;
  • tabindex="0" e role="link" per l’accessibilità;
  • data-t quando il link originale portava un attributo target.

I link il cui URL inizia con #, mailto:, tel: o javascript: vengono ignorati. L’attributo rel viene rimosso, l’attributo target viene conservato come data-t.

Ripiego automatico

Se l’analisi del documento fallisce, o se nessun selettore corrisponde a un link, l’HTML originale viene restituito senza modifiche. Il modulo non può quindi rompere una pagina a causa di un markup inatteso.

Contenuti caricati via AJAX

L’aggiornamento dei filtri e lo scroll infinito reinseriscono link dopo il rendering iniziale. Il file front.js installa un MutationObserver che applica gli stessi selettori a questi nuovi link, lato browser. I selettori vengono trasmessi al front tramite Media::addJsDef. Le righe XPath sono escluse da questo meccanismo, poiché il browser non le valuta.

Verificare che funzioni

  1. Aprite una pagina categoria con filtri, poi visualizzate il codice sorgente della pagina (Ctrl+U, non l’ispettore degli elementi).
  2. Cercate df-obf: dovete trovare elementi span al posto dei link di filtro.
  3. Cercate un URL di filtro, ad esempio ?q=: non deve più comparire in un attributo href.

L’ispettore degli elementi mostra il DOM dopo l’esecuzione del JavaScript, non l’HTML servito. Per giudicare il risultato dal punto di vista del crawler, usate sempre la visualizzazione del sorgente o uno strumento come curl.

Lato navigazione, provate il clic sinistro, il clic centrale, il ctrl+clic (cmd+clic su macOS) e il tasto Invio dopo aver raggiunto un filtro con il tabulatore.

Risoluzione dei problemi

Non viene offuscato nulla

Verificate nell’ordine: l’interruttore principale è attivo, almeno un preset o un selettore è impostato, il controller corrente non è nell’elenco delle esclusioni, l’estensione PHP DOM è disponibile. Svuotate poi la cache di PrestaShop.

Un tema personalizzato non è coperto

I preset puntano ai selettori del tema Classic. Su un tema su misura, ispezionate il blocco dei filtri per annotare l’identificatore o la classe del contenitore, poi aggiungete una riga di selettore personalizzato.

Riducete la portata del selettore puntando a un contenitore più preciso, oppure togliete il preset coinvolto e sostituitelo con selettori personalizzati più stretti.

Alcuni moduli di terze parti ricostruiscono interamente il loro blocco di filtri. Se il comportamento differisce tra la prima visualizzazione e l’aggiornamento, verificate che il vostro selettore personalizzato si applichi al contenitore ricostruito e non a un elemento distrutto a ogni aggiornamento.

Domande frequenti

È cloaking?

No. L’HTML servito è identico per tutti: nessun test di user-agent, nessuna variante di pagina. Il link non esiste per nessuno nel codice sorgente, e il browser lo ricostruisce al momento dell’interazione.

Gli URL già indicizzati spariscono?

No. L’offuscamento agisce sulla scoperta di nuovi URL. Per gli URL già presenti nell’indice, mantenete le vostre direttive noindex o i vostri reindirizzamenti finché Google non li rivisita.

Qual è l’impatto sulle prestazioni?

Un’analisi DOM della pagina finale, nell’ordine di qualche millisecondo su una pagina categoria standard. Sul front, 5 KB di JavaScript e 0,2 KB di CSS.

Bisogna disattivare il modulo durante un audit SEO?

No, al contrario: l’audit deve riflettere ciò che vedono i crawler. Se il vostro strumento segnala un calo del numero di link interni sulle pagine categoria, è il risultato atteso.

Questa pagina ti è stata utile?

Ancora bloccato? Contatta l'assistenza