Come effettuare redirect in Drupal

Guida per ridirezionare le pagine in Drupal

In Drupal 7 (ma anche in Drupal 6), esistono molti modi per effettuare un redirect da un indirizzo ad un altro in base alle esigenze del sito. Ad esempio dei nodi potrebbero dover essere visualizzati solo all'interno di viste e mai come nodi completi, può essere quindi impostato un redirect dalla visualizzazione completa del nodo verso una pagina specifica.

Come effettuare redirect in Drupal

Redirect con CTools: HTTP Response

Il primo modo per redirigere un utente da una pagina ad un'altra, è quello di usare la funzionalità HTTP Response introdotta nel modulo Drupal "Chaos Tools Suite 1.8".

È sufficiente creare una nuova pagina con il modulo "Page Manager" usando HTTP Response al posto di un classico pannello (panels) che permette di scegliere il tipo di risposta HTTP:

  • 404 - Pagina non trovata
  • 403 - Accesso negato
  • 301 - Ridirezione dal vecchio indirizzo al nuovo

Sempre grazie a "Page Manager" si specifica quindi in quali casi effettuare il tipo di azione scelta tramite le regole di selezione (selection rules), ed infine si può impostare la destinazione del redirect (ovviamente nel caso si abbia scelto 301 come tipo di risposta HTTP).

Page manager redirect

Anche con il modulo "Page manager redirect" si può definire l'azione di "redirect" nel modulo "Page Manager" in maniera analoga alla funzionalità HTTP Response di "CTools" appena presentata. Questo modulo è stato sviluppato precedentemente all'introduzione di HTTP Reponse in CTools, pertanto verrà pian piano soppiantato da CTools nel momento in cui tutte le funzionalità saranno state implementate in esso (come ad esempio l'uso di token/context nella generazione dell'URL di destinazione).

CCK Redirection (Drupal 6)

Il modulo "CCK Redirection" aggiunge un nuovo tipo di campo CCK che conterrà un URL. Tale indirizzo verrà quindi usato per rimandare gli utenti nel momento in cui visitano il nodo.

Field Redirection (Drupal 7)

Per Drupal 7 è disponibile un modulo analogo a "CCK Redirection" che si chiama "Field Redirection". Questo modulo estende e migliora le caratteristiche della versione per Drupal 6 in quanto fornisce un formattatore di campo (field formatter) valido per campi di tipo Link, Node Reference e User Reference. In questo modo il redirect verrà effettuato verso un indirizzo (o un nodo, o un utente) indicato in un campo già esistente senza dover quindi creare un campo ad hoc.

Per configurare una redirezione di questo tipo è sufficiente selezionare il formattatore per il campo che si desidera usare come destinazione dalla visualizzazione Full content. Il modulo "Field Redirection" permette di scegliere diversi tipi di redirect:

  • 300 - Scelte multiple (ad esempio per più lingue)
  • 301 - Spostato permanentemente
  • 302 - Trovato
  • 303 - Altro
  • 304 - Non modificato
  • 305 - Usa proxy
  • 307 - Redirezione temporanea

I codici di risposta più usati sono il 301 ed il 307, ma per completezza il modulo permette di scegliere uno qualunque dei possibili codici.

ATTENZIONE: Quando si usa un modulo Drupal come "Field Redirection" bisogna stare molto attenti a come lo si configura perché potrebbero esserci degli effetti collaterali non desiderati nel caso in cui non sia impostato correttamente, ad esempio se il redirect è anche nella visualizzazione RSS, piuttosto che ci siano più campi impostati con questo field formatter o la cardinalità del campo sia maggiore di 1.

Rules

In questa panoramica dei moduli per effettuare la ridirezione di pagine non poteva mancare il modulo Rules che, tra le innumerevoli funzionalità permette anche di redirigere l'utente in seguito a particolari eventi od azioni.

Path redirect

Un metodo manuale per effettuare dei redirect è quello di usare il modulo Drupal "Path redirect". Questo modulo permette di specificare un elenco di pagine e, per ogni pagina, indicare la pagina verso dove redirigere l'utente (ed anche il tipo di risposta HTTP).

Questo modulo è una valida alternativa ai redirect impostati nel webserver nel caso in cui i redirect non siano pianificati. Ad esempio con il modulo "Path redirect" si possono creare dei redirect senza dover modificare il file .htaccess. Questo modulo, però, non permette redirect complessi come quelli che si potrebbero implementare tramite il webserver.

Node destination

In Drupal 6 esiste anche un modulo chiamato "Node destination" che offre la funzionalità di redirect verso un certo indirizzo dopo aver creato o modificato un nodo. L'indirizzo viene configurato per ogni tipo di nodo.

Custom (Form) destination

Il modulo "Custom (Form) destination" è una versione più complessa di "Node destination" in quanto permette di definire per ogni form, non solo quello di creazione/modifica dei nodi, quale sarà la pagina da mostrare all'utente dopo che il form è stato inviato.