# dfredirects: menedżer przekierowań 301

> Wprowadzenie dfredirects to kompletny menedżer przekierowań dla PrestaShop 8 i 9. Obsługuje kody HTTP 301, 302, 307, 308 i 410, oferuje trzy strategie dopasowania (dokładne, wildcard, regex PCRE), monitoruje błędy…

- Strona: <https://www.datafirefly.com/pl/documentation/dfredirects/>
- Język: pl
- Zaktualizowano: 2026-08-01
- Inne języki: [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), [it](https://www.datafirefly.com/it/documentation/dfredirects/index.md), [pt](https://www.datafirefly.com/pt/documentation/dfredirects/index.md), [nl](https://www.datafirefly.com/nl/documentation/dfredirects/index.md)
- Indeks: <https://www.datafirefly.com/pl/documentation/llms.txt>

## Wprowadzenie

dfredirects to kompletny menedżer przekierowań dla PrestaShop 8 i 9. Obsługuje kody HTTP 301, 302, 307, 308 i 410, oferuje trzy strategie dopasowania (dokładne, wildcard, regex PCRE), monitoruje błędy 404 i automatycznie tworzy przekierowania, gdy zmieniasz slug produktu, kategorii, strony CMS, producenta albo dostawcy.

## Instalacja

1. Przejdź do **Moduły → Menedżer modułów → Wgraj moduł**.
2. Wgraj plik `dfredirects-1.0.1.zip`.
3. Kliknij **Zainstaluj**.
4. W back office pojawia się nowe menu **Redirects** z czterema zakładkami: Dashboard, Rules, 404 Log oraz Import / Export / Settings.

Instalacja tworzy trzy tabele: `ps_dfredirects_rule` (reguły), `ps_dfredirects_notfound` (zalogowane błędy 404) i `ps_dfredirects_slug_snapshot` (migawki adresów przed modyfikacją). Deinstalacja usuwa te tabele i całą konfigurację.

**Wymagania:** PrestaShop minimum 8.0, PHP 8.1 albo nowsze. Moduł działa identycznie na PrestaShop 9.

**Polski sklep:** interfejs back office modułu jest dostarczany po francusku i angielsku. W polskim sklepie wyświetla się w języku angielskim, dlatego w tym przewodniku nazwy zakładek i pól podajemy w oryginale. Nie ma to wpływu na działanie przekierowań, które są niezależne od języka interfejsu.

## Konfiguracja

Przejdź do **Redirects → Import / Export / Settings**. Dostępne parametry:

- **Log 404 errors**: główny przełącznik loggera błędów 404.
- **Log bot 404s**: uwzględniać albo nie żądania znanych robotów (Googlebot, Bingbot, GPTBot, ClaudeBot i inne). Zalecane: wyłączone, aby log pozostał czytelny.
- **Auto-redirect on slug change**: włączenie automatycznego tworzenia przekierowań 301 przy zmianie adresu.
- **Preserve query string by default**: domyślna wartość pola preserve_qs dla nowych reguł.
- **404 log retention (days)**: czas przechowywania logów 404 przed automatycznym czyszczeniem. Wartość 0 wyłącza czyszczenie.
- **Default HTTP code**: kod stosowany w regułach tworzonych automatycznie (zalecane 301).
- **Ignored URL patterns**: jeden wzorzec na linię, dopasowanie po podciągu. Przykłady: `.well-known`, `wp-admin`, `autodiscover`. Pasujące adresy nigdy nie trafią do logu.

## Tworzenie reguły przekierowania

W **Redirects → Rules** kliknij **New rule**. Każda reguła zawiera:

- **Source URL**: adres do przechwycenia (ścieżka względna, na przykład `/stara-strona`).
- **Match type**: exact, wildcard albo regex (opis poniżej).
- **Target URL**: cel (ścieżka względna albo adres bezwzględny dla domeny zewnętrznej). Puste pole dla kodu 410.
- **HTTP code**: 301 (trwałe, zalecane pod SEO), 302 (tymczasowe), 307 i 308 (zachowują metodę HTTP), 410 (treść usunięta na stałe, bez celu).
- **Preserve query string**: gdy włączone, `?utm_source=x` jest przenoszony do celu.
- **Shop / Language**: zakres reguły. Wartość 0 oznacza wszystkie sklepy i wszystkie języki.
- **Note**: dowolne pole na Twoje adnotacje.

### Dopasowanie dokładne

Żądany adres musi dokładnie odpowiadać źródłu (po normalizacji: małe litery, bez query stringa, bez końcowego ukośnika). To najwydajniejszy typ: indeksowany odczyt z bazy o stałym koszcie, niezależnie od rozmiaru tabeli.

### Dopasowanie wildcard

Gwiazdka `*` przechwytuje dowolną sekwencję. Przechwycone fragmenty wykorzystasz w celu przez `$1`, `$2` i kolejne.

```
Źródło: /stara-kategoria/*
Cel:    /nowa-kategoria/$1

/stara-kategoria/moj-produkt  →  /nowa-kategoria/moj-produkt
```

### Dopasowanie regex

Pełna składnia PCRE między ogranicznikami tyldy. Grupy przechwytujące wykorzystasz przez `$1`, `$2` i kolejne. Do cyfr używaj klasy `[0-9]` (odpowiednik skrótu z odwrotnym ukośnikiem i literą d).

```
Źródło: ~^/product/([0-9]+)/(.*)$~
Cel:    /p/$1-$2

/product/42/super-produkt  →  /p/42-super-produkt
```

Modyfikator `e` (wykonywanie kodu) jest automatycznie usuwany ze względów bezpieczeństwa. Nieprawidłowe reguły regex są odrzucane przy tworzeniu i przy imporcie.

## Automatyczne przekierowania przy zmianie sluga

Gdy opcja jest włączona, moduł zapisuje adres każdego obiektu przed jego aktualizacją (hook `UpdateBefore`), porównuje go po aktualizacji (hook `UpdateAfter`) i tworzy przekierowanie 301, jeśli adres się zmienił. Działa to dla produktów, kategorii, stron CMS, producentów i dostawców, w każdym aktywnym języku i sklepie.

Przy **usunięciu** produktu tworzone jest przekierowanie do jego domyślnej kategorii. Przy usunięciu kategorii do kategorii nadrzędnej. Jeśli żaden sensowny cel nie istnieje, celem awaryjnym jest strona główna.

### Wykrywanie łańcuchów i pętli

Jeśli istnieje reguła A do B, a Ty zmienisz slug B na C, moduł automatycznie zaktualizuje regułę A tak, aby wskazywała bezpośrednio na C (rozwiązywanie rekurencyjne, maksymalnie 5 poziomów). Reguły zaktualizowane w ten sposób mają w notatce oznaczenie `[chain-fix]`. Pętle (A do B do A) są wykrywane, a utworzenie reguły odrzucane.

Automatyczne przekierowania powstają tylko wtedy, gdy pole `link_rewrite` obiektu jest wypełnione w danym języku. Źle sformułowane adresy (segmenty złożone wyłącznie z cyfr i myślników) są odrzucane.

## Monitoring błędów 404

Każda nieznaleziona strona trafia do **Redirects → 404 Log** wraz z adresem, referrerem, user-agentem, adresem IP, licznikiem trafień i datą ostatniej wizyty. Domyślny filtr ukrywa boty i wpisy już rozwiązane.

### Tworzenie przekierowania z poziomu błędu 404

Kliknij akcję **Create redirect** przy wpisie 404. Moduł analizuje Twój katalog i proponuje do 5 prawdopodobnych celów (produkty, kategorie, strony CMS), uszeregowanych według podobieństwa, z wizualnym wynikiem. Wybierz propozycję albo wpisz adres ręcznie, wskaż kod HTTP i zatwierdź: reguła zostaje utworzona, a błąd 404 oznaczony jako rozwiązany.

## Import i eksport CSV

### Format pliku

```
source_url,target_url,match_type,http_code,id_shop,id_lang,preserve_qs,active,note
/stara-strona,/nowa-strona,exact,301,0,0,1,1,migracja 2026
/produkty/*,/products/$1,wildcard,301,0,0,1,1,pl na en
~^/cat-([0-9]+)/$~,/category/$1,regex,301,0,0,1,1,identyfikatory liczbowe
```

Obowiązkowe są wyłącznie kolumny `source_url` i `target_url` (cel opcjonalny przy kodzie 410). Separatory przecinek, średnik, tabulator i pionowa kreska są wykrywane automatycznie. Opcja **Update existing rules** włącza tryb UPSERT: istniejące już źródło jest aktualizowane zamiast pomijane.

Raport importu pokazuje liczbę reguł zaimportowanych, zaktualizowanych i pominiętych oraz szczegóły błędów wiersz po wierszu (nieprawidłowy regex, brak źródła i tak dalej).

### Eksport

Przycisk **Download CSV** eksportuje wszystkie reguły w UTF-8 z BOM, gotowe do otwarcia w Excelu.

## Pulpit

Pulpit pokazuje: liczbę aktywnych reguł (wraz z udziałem reguł wygenerowanych automatycznie), łączną liczbę obsłużonych przekierowań, liczbę nierozwiązanych błędów 404, trend błędów 404 z 30 dni, top 5 najczęstszych błędów 404, top 5 najczęściej używanych przekierowań oraz listę reguł martwych (utworzonych ponad 90 dni temu i nigdy nieużytych), będących kandydatami do usunięcia, aby tabela pozostała lekka.

## Rozwiązywanie problemów

### Moje przekierowanie się nie uruchamia

- Sprawdź, czy reguła jest **aktywna** i czy jej zakres sklepu i języka odpowiada żądaniu.
- Reguły dokładne są sprawdzane przed wildcard i regex: upewnij się, że reguła dokładna nie przesłania Twojego wzorca.
- Wyczyść pamięć podręczną PrestaShop (`var/cache/`).

### Zbyt wiele błędów 404 generowanych przez boty

Wyłącz **Log bot 404s** w ustawieniach albo dodaj wzorce w **Ignored URL patterns** (na przykład `.well-known`, `wp-`, `autodiscover`).

### Automatyczne przekierowanie nie powstało przy zmianie sluga

- Automatyczne przekierowanie uruchamia się tylko wtedy, gdy faktycznie zmieni się `link_rewrite`. Sama zmiana nazwy nie wystarczy.
- Sprawdź, czy opcja **Auto-redirect on slug change** jest włączona.
- Jeśli obiekt był wyłączony albo jego `link_rewrite` był pusty w danym języku, migawka nie została zapisana.

## Historia zmian

### 1.0.1, 11 maja 2026

- Walidacja generowanych adresów przed zapisem: odrzucanie źle sformułowanych źródeł.
- Pomijanie generowania, gdy link_rewrite jest pusty dla bieżącego języka albo sklepu.

### 1.0.0, 11 maja 2026

- Wersja początkowa: silnik przekierowań (dokładne, wildcard, regex), monitoring błędów 404, automatyczne przekierowania, import i eksport CSV, sugestie, pulpit.
