# dfredirects — Gestore di reindirizzamenti 301

> Introduzione dfredirects è un gestore di reindirizzamenti completo per PrestaShop 8 e 9. Gestisce i codici HTTP 301, 302, 307, 308 e 410, offre tre strategie di corrispondenza (esatta, wildcard,…

- Pagina: <https://www.datafirefly.com/it/documentation/dfredirects/>
- Lingua: it
- Aggiornato il: 2026-07-02
- Altre lingue: [fr](https://www.datafirefly.com/documentation/dfredirects/index.md), [en](https://www.datafirefly.com/en/documentation/dfredirects/index.md), [es](https://www.datafirefly.com/es/documentation/dfredirects/index.md), [de](https://www.datafirefly.com/de/documentation/dfredirects/index.md), [pl](https://www.datafirefly.com/pl/documentation/dfredirects/index.md), [pt](https://www.datafirefly.com/pt/documentation/dfredirects/index.md), [nl](https://www.datafirefly.com/nl/documentation/dfredirects/index.md)
- Indice: <https://www.datafirefly.com/it/documentation/llms.txt>

## Introduzione

dfredirects è un gestore di reindirizzamenti completo per PrestaShop 8 e 9. Gestisce i codici HTTP 301, 302, 307, 308 e 410, offre tre strategie di corrispondenza (esatta, wildcard, regex PCRE), monitora gli errori 404 e crea automaticamente reindirizzamenti quando si modifica lo slug di un prodotto, una categoria, una pagina CMS, un produttore o un fornitore.

## Installazione

1. Andare su **Moduli → Gestore moduli → Carica un modulo**.
2. Caricare il file `dfredirects-1.0.1.zip`.
3. Cliccare su **Installa**.
4. Un nuovo menu **Redirects** appare nel back office con quattro schede: Dashboard, Rules, 404 Log e Import / Export / Settings.

L'installazione crea tre tabelle: `ps_dfredirects_rule` (le regole), `ps_dfredirects_notfound` (i 404 registrati) e `ps_dfredirects_slug_snapshot` (le istantanee URL prima della modifica). La disinstallazione rimuove queste tabelle e tutta la configurazione.

**Requisiti:** PrestaShop 8.0 minimo, PHP 8.1 o superiore. Il modulo funziona in modo identico su PrestaShop 9.

## Configurazione

Andare su **Redirects → Import / Export / Settings**. Le impostazioni disponibili:

- **Log 404 errors** — interruttore principale del logger 404.
- **Log bot 404s** — includere o meno le richieste dei bot conosciuti (Googlebot, Bingbot, GPTBot, ClaudeBot, ecc.). Consigliato: disattivato per mantenere un log pulito.
- **Auto-redirect on slug change** — attiva la creazione automatica di 301 al cambio di URL.
- **Preserve query string by default** — valore predefinito del campo preserve_qs per le nuove regole.
- **404 log retention (days)** — periodo di conservazione prima della pulizia automatica. 0 disattiva la pulizia.
- **Default HTTP code** — codice usato per le regole create automaticamente (301 consigliato).
- **Ignored URL patterns** — un pattern per riga, corrispondenza per sottostringa. Esempio: `.well-known`, `wp-admin`, `autodiscover`. Gli URL corrispondenti non verranno mai registrati.

## Creare una regola di reindirizzamento

In **Redirects → Rules**, cliccare su **New rule**. Ogni regola contiene:

- **Source URL** — l'URL da intercettare (percorso relativo, es. `/vecchia-pagina`).
- **Match type** — esatta, wildcard o regex (vedi sotto).
- **Target URL** — la destinazione (percorso relativo o URL assoluto per un dominio esterno). Vuoto per un codice 410.
- **HTTP code** — 301 (permanente, consigliato SEO), 302 (temporaneo), 307/308 (conservano il metodo HTTP), 410 (contenuto rimosso definitivamente, senza destinazione).
- **Preserve query string** — se attivato, `?utm_source=x` viene trasferito alla destinazione.
- **Shop / Language** — ambito della regola. 0 = tutti i negozi / tutte le lingue.
- **Note** — campo libero per le vostre annotazioni.

### Corrispondenza esatta

L'URL richiesto deve corrispondere esattamente alla fonte (dopo normalizzazione: minuscole, senza query string, senza barra finale). È il tipo più performante — ricerca indicizzata in database, costo costante indipendentemente dalla dimensione della tabella.

### Corrispondenza wildcard

L'asterisco `*` cattura qualsiasi sequenza. Le catture sono riutilizzabili nella destinazione con `$1`, `$2`, ecc.

```
Fonte       : /vecchia-categoria/*
Destinazione : /nuova-categoria/$1

/vecchia-categoria/mio-prodotto  →  /nuova-categoria/mio-prodotto
```

### Corrispondenza regex

Sintassi PCRE completa tra delimitatori tilde. I gruppi di cattura si usano con `$1`, `$2`, ecc. Usare la classe `[0-9]` per le cifre.

```
Fonte       : ~^/product/([0-9]+)/(.*)$~
Destinazione : /p/$1-$2

/product/42/prodotto-fantastico  →  /p/42-prodotto-fantastico
```

Il modificatore `e` (valutazione di codice) viene rimosso automaticamente per sicurezza. Le regole regex non valide vengono rifiutate alla creazione e all'importazione.

## Reindirizzamenti automatici al cambio di slug

Quando l'opzione è attivata, il modulo cattura l'URL di ogni oggetto prima del suo aggiornamento (hook `UpdateBefore`), lo confronta dopo l'aggiornamento (hook `UpdateAfter`) e crea un reindirizzamento 301 se l'URL è cambiato. Funziona per prodotti, categorie, pagine CMS, produttori e fornitori, per ogni lingua e negozio attivi.

All'**eliminazione** di un prodotto, viene creato un reindirizzamento verso la sua categoria predefinita. All'eliminazione di una categoria, verso la sua categoria padre. Se non esiste alcuna destinazione pertinente, il fallback è la homepage.

### Rilevamento di catene e loop

Se esiste una regola A→B e si cambia lo slug di B in C, il modulo aggiorna automaticamente la regola A per puntare direttamente a C (risoluzione ricorsiva, max 5 livelli). Le regole aggiornate in questo modo riportano la menzione `[chain-fix]` nella loro nota. I loop (A→B→A) vengono rilevati e la creazione viene rifiutata.

I reindirizzamenti automatici vengono creati solo se il `link_rewrite` dell'oggetto è compilato nella lingua interessata. Gli URL malformati (segmenti composti solo da cifre e trattini) vengono rifiutati.

## Monitoraggio dei 404

Ogni pagina non trovata viene registrata in **Redirects → 404 Log** con URL, referrer, user-agent, indirizzo IP, contatore di hit e data dell'ultima visita. Il filtro predefinito nasconde i bot e le voci già risolte.

### Creare un reindirizzamento da un 404

Cliccare sull'azione **Create redirect** di una voce 404. Il modulo analizza il vostro catalogo e propone fino a 5 destinazioni probabili (prodotti, categorie, pagine CMS) classificate per similarità, con un punteggio visivo. Selezionate un suggerimento o inserite un URL manuale, scegliete il codice HTTP, confermate: la regola viene creata e il 404 viene contrassegnato come risolto.

## Importazione ed esportazione CSV

### Formato del file

```
source_url,target_url,match_type,http_code,id_shop,id_lang,preserve_qs,active,note
/vecchia-pagina,/nuova-pagina,exact,301,0,0,1,1,migrazione 2026
/produits/*,/products/$1,wildcard,301,0,0,1,1,fr verso en
~^/cat-([0-9]+)/$~,/category/$1,regex,301,0,0,1,1,id numerici
```

Solo le colonne `source_url` e `target_url` sono obbligatorie (destinazione facoltativa per un codice 410). I delimitatori virgola, punto e virgola, tabulazione e pipe vengono rilevati automaticamente. L'opzione **Update existing rules** attiva l'UPSERT: una fonte già presente viene aggiornata invece di essere ignorata.

Il report di importazione mostra il numero di regole importate, aggiornate, ignorate, e il dettaglio degli errori riga per riga (regex non valida, fonte mancante, ecc.).

### Esportazione

Il pulsante **Download CSV** esporta tutte le regole in UTF-8 con BOM, apribile direttamente in Excel.

## Dashboard

Il pannello mostra: il numero di regole attive (con la quota auto-generata), il totale dei reindirizzamenti serviti, il numero di 404 non risolti, la tendenza 404 su 30 giorni, la top 5 dei 404 più frequenti, la top 5 dei reindirizzamenti più usati, e l'elenco delle regole morte (create da più di 90 giorni, mai attivate) — candidate all'eliminazione per mantenere una tabella leggera.

## Risoluzione dei problemi

### Il mio reindirizzamento non si attiva

- Verificate che la regola sia **attiva** e che il suo ambito negozio / lingua corrisponda alla richiesta.
- Le regole esatte vengono valutate prima delle wildcard e regex: verificate che una regola esatta non nasconda il vostro pattern.
- Svuotate la cache di PrestaShop (`var/cache/`).

### Troppi 404 generati dai bot

Disattivate **Log bot 404s** nelle impostazioni, o aggiungete pattern in **Ignored URL patterns** (es. `.well-known`, `wp-`, `autodiscover`).

### L'auto-redirect non è stato creato al cambio di slug

- L'auto-redirect si attiva solo se il `link_rewrite` cambia realmente — una modifica del solo nome non basta.
- Verificate che l'opzione **Auto-redirect on slug change** sia attivata.
- Se l'oggetto era disattivato o il suo `link_rewrite` era vuoto nella lingua interessata, non viene presa alcuna istantanea.

## Changelog

### 1.0.1 — 11 maggio 2026

- Validazione degli URL generati prima del salvataggio: rifiuto delle fonti malformate.
- Omissione della generazione se il link_rewrite è vuoto per la lingua o il negozio corrente.

### 1.0.0 — 11 maggio 2026

- Versione iniziale: motore di reindirizzamento (esatta / wildcard / regex), monitoraggio 404, auto-redirect, importazione/esportazione CSV, suggerimenti, dashboard.
