Consentire a Google di indicizzare le pagine protette

google: indicizzare le pagine protetteAvere contenuti riservati agli utenti iscritti al sito è un'ottimo modo di convincere i navigatori ad iscriversi al nostro sito, e avere tanti scritti è un'evidente vantaggio sotto molteplici aspetti, primo tra tutti la possibilità di azioni di tipo push. A meno che il nostro sito non sia uno dei più noti, se non del pianeta almeno del settore di appartenenza, difficilmente potremo attrarre visitatori se non essendo fortemente presenti nei motori di ricerca, ovvero se non fornendo a questi ultimi contenuti attuali ed interessanti. E qui sta il problema: permettere ai motori di ricerca di indicizzare le pagine ma non permettere agli utenti di leggerne il contenuto, se non previa registrazione.

Il problema si è posto durante un intervento SEO sul sito di un cliente: tanti contenuti interessanti (tecnici e specifici del settore) ma scarsissima presenza sui motori di ricerca, dato che per accedere alla massima parte dei contenuti era necessaria la registrazione, inutile dire che consentire l'accesso a tutti non era un'opzione.

Search engine robots

Bots, per gli amici. Sono programmi che effettuano la scansione di un sito, seguendo i links presenti, pagina per pagina, ne analizzano i contenuti e li inseriscono nell'indice del motore di ricerca, in modo che il contenuto del sito possa apparire nella serp del motore. I bots sono identificabili tramite due criteri, tra loro complementari:

  • nome del robot (user agent) nell'intestazione http della richiesta al sito
  • indirizzo IP di provenienza della richiesta

Sebbene il primo requisito sia sufficiente ad identificare il motore nella massima parte dei casi, si tenga presente che lo user agent non è una firma digitale, pertanto è facilmente falsificabile da persone sufficientemente esperte del settore. Se serve che nessuno possa leggere le pagine senza registrarsi è necessario provvedere anche alla verifica dell'indirizzo IP, se riteniamo accettabile che una piccola parte degli utenti possa eludere la registrazione per leggere i contenuti allora basta il controllo sullo user agent.

La verifica della provenienza della richiesta offre maggiore sicurezza essendo abbastanza difficile da eludere, ma presenta un problema: se l'elenco degli ip dei bots non è aggiornato si corre il rischio di chiudere la porta in faccia al motore di ricerca.

 

Indicizzare le pagine protette

La protezione di "base" in Joomla! si ottiene impostando l'ambito di visibilità della risorsa che ci interessa, nel caso specifico menù, voci di menù e articoli, a 'Registered'. In questo modo la risorsa sarà visualizzata solamente ad un utente registrato. Qualsiasi tentativo di accedere direttamente alla risorsa reindirizzerà il visitatore alla pagina di login/registrazione.

È pertanto necessario fare sì che Joomla! riconosca il motore di ricerca e provveda ad effettuare automaticamente il login in maniera trasparente al motore, in modo che a quest'ultimo sia consentito leggere le pagine riservate agli utenti registrati ed indicizzarle.

Una nota: vogliamo che il motore indicizzi le pagine, ma non vogliamo certo che il visitatore possa leggerne il contenuto nella copia cache del motore di ricerca. È pertanto importante che nell'head della pagina html sia presente il meta con chiave 'robots' e valore 'noarchive'.

Quando un generico utente effettuerà una ricerca tramite un motore troverà la pagina riservata con il relativo abstract, che nel caso di Google sarà una parte del testo ritenuta coerente con la ricerca da Google stesso, e potrà selezionare la voce. Ovviamente quando il nostro utente tenterà di accedere alla pagina verrà portato immediatamente alla pagina di login/registrazione, ove sarà presente un testo di benvenuto e l'invito a registrarsi per accedere ai contenuti protetti. Una volta effettuato il login il meccanismo interno di Joomla! provvederà a riportare l'utente alla risorsa richiesta.

 

Permettere l'indicizzazione delle pagine protette a Joomla!

Non è possibile per Joomla! compiere quanto sopra se non tramite l'integrazione di codice ad hoc. Per fortuna la struttura modulare di questo CMS e la progettazione del software ad eventi (per chi vuole saperne di più: observer pattern) permette di aggiungere il codice necessario come modulo aggiuntivo senza richiedere modifiche al codice originario del cms.

È necessario creare un plugin di tipo system ed agganciarlo all'evento onAfterInitialise (per chi vuole saperne di più: Joomla! Application execution order). Questo trigger viene fatto scattare dopo l'inizializzazione del framework del cms, ma prima delle funzioni di calcolo del routing (scelta della pagina da visualizzare) e di authorisation (autorizzazioni a visualizzare le informazioni contenute).

Compito del plugin è quindi quello di valutare le condizioni e le caratteristiche della richiesta e, nel caso ricorrano i presupposti, autenticare il bot come un utente registrato di Joomla!, cosa possibile tramite il metodo login() dell'oggetto globale JApplication. Questo metodo permette di loggare l'utente al volo, senza cambi di pagina o alterazione degli headers http/html ritornati, e fa sì che, in tutti i passi successivi del flusso che porta alla visualizzazione della pagina, Joomla! consideri il bot che ha inviato la richiesta come un utente registrato e correttamente loggato.

 

Permettere l'accesso a Google e ad altri bots

Per chi desidera studiare il codice o semplicemente utilizzarlo è disponibile il plugin di base nella sezione  development del sito (informazioni in lingua inglese).

Ovviamente quanto pubblicato è minima parte del lavoro svolto per il nostro cliente (che ha peraltro autorizzato questa pubblicazione); è cosa evidente che chi ha pagato per uno sviluppo possa non gradire che la concorrenza abbia ad usufruirne in via gratuita.

 

Aggiungi commento

Please note: URL in text are not linked and user's site address is only for internal use and is not published.

Comments are human checked. All spam will be removed, so don't waste your time and, especially, mine!

Codice di sicurezza
Aggiorna