Redirect in Drupal 11

Tutte le soluzioni per gestire i redirect in Drupal 11: dal modulo Path Redirect al codice personalizzato.

Gestire correttamente i redirect è fondamentale per la salute di un sito Drupal, sia dal punto di vista dell’esperienza utente che della SEO. Con Drupal 11, esistono diverse modalità per effettuare redirezioni: da moduli contrib come Redirect, fino a soluzioni personalizzate tramite routing e controller. In questo articolo vedremo quali sono le opzioni disponibili, come sceglierle in base alle esigenze e quali sono le best practices da seguire per ottenere un comportamento pulito ed efficiente.

12 June 2025

Articolo aggiornato dal testo originale (Redirect con CTools & moduli storici)

Modulo Redirect (contrib)

In Drupal 11 il modulo contrib Redirect rimane la soluzione più semplice per gestire redirect 301, 302 o 404 tramite interfaccia amministrativa. Dopo averlo installato con Composer e abilitato, si trova l'interfaccia sotto Gestione → Configurazione → Sistema → Redirect.

Da questa pagina basta semplicemente aggiungere un “URL di origine” e scegliere la “Destinazione” e il codice HTTP.

Ecco come installarlo ed abilitarlo:

# Installazione tramite Composer
composer require drupal/redirect

# Abilitazione del modulo
drush en redirect -y
Le funzionalità principali del modulo Redirect sono:
  • Interfaccia amministrativa user-friendly
  • Import/export di redirect in massa
  • Statistiche sui redirect
  • Gestione dei redirect 404
  • Integrazione con altri moduli

I principali vantaggi di questo modulo sono

  • Nessun codice necessario
  • Interfaccia grafica completa
  • Gestione professionale
  • Import/export CSV

Chiaramente in alcuni casi potrebbe non essere la soluzione ottimale in quanto si tratta sempre di una dipendenza esterna e può essere "overkill" per pochi redirect.

Controller Personalizzato

Una alternativa al modulo Redirect è creare un controller personalizzato che gestisce i reindirizzamenti.

File: mio_modulo.routing.yml

mio_modulo.redirect_old
 path: '/vecchio-percorso'
 defaults:
   _controller: '\Drupal\mio_modulo\Controller\RedirectController::toNew'
   _title: 'Redirect permanente'
 requirements:
_permission: 'access content'

File: src/Controller/RedirectController.php

<?php

namespace Drupal\mio_modulo\Controller;

use Drupal\Core\Controller\ControllerBase;
use Symfony\Component\HttpFoundation\RedirectResponse;

class RedirectController extends ControllerBase {

  /**
   * Redirect permanente da /vecchio-percorso a /nuovo-percorso.
   */
  public function toNew() {
    // Destinazione del redirect (può essere anche una route).
    $destination = '/nuovo-percorso';

    // Codice HTTP (301 = permanente).
    return new RedirectResponse($destination, 301);
  }

}

Questa soluzione offre diversi vantaggi: è semplice da implementare, consente un controllo completo sulla logica del redirect e supporta condizioni personalizzate, risultando ideale per casi specifici. Inoltre, si basa sugli standard di Drupal e Symfony, garantendo compatibilità e buona manutenzione del codice. Tuttavia presenta anche alcuni svantaggi: ogni redirect richiede l’aggiunta di codice, rendendo l’approccio poco scalabile in presenza di numerosi redirect. Inoltre non è gestibile tramite l’interfaccia di amministrazione, limitando la possibilità per utenti non sviluppatori di modificare o aggiungere redirect in autonomia. È quindi una soluzione indicata soprattutto per redirect statici e controllati a livello di codice.

🔧Best Practices sulla gestione dei redirect

Di fronte alla gestione dei redirect, è fondamentale seguire alcune best practice per garantire sia un’ottima esperienza utente che il rispetto delle raccomandazioni SEO. Innanzitutto, utilizzare sempre il codice HTTP corretto: un 301 quando la risorsa è stata spostata in modo permanente, un 302 se si tratta di un reindirizzamento temporaneo. Evitare poi catene di redirect: indirizzare direttamente l’URL di partenza verso la destinazione finale riduce i tempi di caricamento e previene errori. Prima di mettere in produzione, testare ogni redirect su diversi browser e dispositivi per assicurarsi che vengano eseguiti correttamente e senza loop. Dal punto di vista SEO, i redirect 301 trasferiscono quasi tutto il “link juice” al nuovo indirizzo, mentre i 302 ne trattengono una parte; perciò è essenziale scegliere con cura il tipo di reindirizzamento. Infine, monitorare regolarmente le performance del sito: troppe redirezioni aggiungono latenza e possono influire negativamente sui tempi di risposta complessivi.