Broken-Link-Checker: Dokumentation
Erkennung defekter Links, kaputter Bilder und auf der Festplatte fehlender Bilddateien in PrestaShop 8 und 9. Installation, Scan-Einstellungen, Ergebnisse lesen, korrigieren und Fehlerbehebung.
Installation
Voraussetzungen
- PrestaShop 8.0 bis 9.x
- PHP mindestens 7.4, empfohlen 8.1 oder höher
- PHP-Erweiterung cURL für die HTTP-Prüfung
- PHP-Erweiterung DOM empfohlen für die Link-Extraktion (fehlt sie, übernimmt ein Verfahren mit regulären Ausdrücken)
Modul installieren
- Laden Sie
dfbrokenlinks.zipaus Ihrem Kundenkonto herunter. - Gehen Sie zu Module, Modulmanager, Modul hochladen und legen Sie die ZIP-Datei ab. Alternativ laden Sie den Ordner
dfbrokenlinks/per FTP nach/modules/. - Klicken Sie auf Installieren.
Die Installation legt vier SQL-Tabellen an (ps_dfbl_scan, ps_dfbl_url, ps_dfbl_occurrence, ps_dfbl_ignore) sowie einen Backoffice-Reiter.
Wo Sie es finden
Der Scanner liegt unter Katalog, Defekte Links & Bilder. Die Konfigurationsseite des Moduls im Modulmanager zeigt eine Zusammenfassung des letzten Scans und einen Button, der zum Scanner führt.
Den ersten Scan starten
Öffnen Sie Katalog, Defekte Links & Bilder und klicken Sie auf Neuen Scan starten. Die Standardeinstellungen passen für die meisten Shops, verfeinern können Sie später.
Die zwei Phasen
Ein Scan läuft in zwei Schritten:
- Sammlung. Das Modul durchläuft die angehakten Inhalte, extrahiert jeden Link und jedes Bild, dedupliziert die URLs und prüft auf der Festplatte die in der Datenbank referenzierten Bilddateien.
- Prüfung. Die verbleibenden URLs werden per HTTP abgefragt, mehrere gleichzeitig, um ihren Statuscode zu lesen.
Der Browser steuert den Fortschritt über aufeinanderfolgende Aufrufe. Jeder Aufruf arbeitet für die in den Einstellungen festgelegte Dauer (standardmäßig 12 Sekunden), speichert seine Position in der Datenbank und gibt die Kontrolle zurück. Genau das erlaubt es, einen großen Katalog zu verarbeiten, ohne je max_execution_time zu überschreiten.
Fortschritt verfolgen
Der Fortschrittsbalken zeigt die laufende Phase. Während der Prüfung nennt ein Zähler die Anzahl bereits getesteter URLs im Verhältnis zur gesammelten Gesamtzahl. Die sechs Kennzahlen unter dem Balken aktualisieren sich laufend.
Anhalten und fortsetzen
Der Button Stopp beendet den Scan sauber. Den Browser-Tab zu schließen hat denselben Effekt, ohne Verlust: die Position wird nach jedem Batch gespeichert. Ein angehaltener Scan behält die bereits erzielten Ergebnisse, sie bleiben in der Tabelle sichtbar.
Einstellungen
Das Panel Scan-Einstellungen ist standardmäßig eingeklappt und öffnet sich über das Symbol oben rechts im Block.
Zu analysierende Inhalte
Jedes Kästchen steht für eine Quelle. Quellen mit dem Hinweis Dateien erzeugen keine einzige HTTP-Anfrage, sie prüfen die Existenz der Dateien auf der Festplatte.
- Produkte: Beschreibung, Kurzbeschreibung, Verfügbarkeitsmeldungen auf Lager und nicht auf Lager
- Kategorien: Beschreibung sowie
additional_description, sofern Ihre PrestaShop-Version diese Spalte führt - CMS-Seiten: Inhalt
- CMS-Kategorien: Beschreibung
- Marken: Beschreibung und Kurzbeschreibung
- Lieferanten: Beschreibung
- Filialen: Notiz, Adresszeile 1 und Zeile 2
- Footer-Linkblöcke: benutzerdefinierter Inhalt des Moduls
ps_linklist - Produktbilddateien: Vorhandensein in
img/p/ - Bilddateien von Kategorien, Marken, Lieferanten, Filialen: Vorhandensein in
img/c/,img/m/,img/su/,img/st/ - Produktanhänge: Vorhandensein im Ordner
download/
Eine Quelle, deren Tabelle auf Ihrer Installation nicht existiert, etwa die Linkblöcke ohne ps_linklist, taucht in der Liste schlicht nicht auf.
Sprachen
Standardmäßig werden alle aktiven Sprachen analysiert. Sprachen abzuwählen verkürzt die Sammlung, lässt aber Links in den übersprungenen Übersetzungen ungeprüft. Nützlich für einen schnellen ersten Durchlauf, danach lohnt die volle Abdeckung.
HTTP-Optionen
- Zeitlimit: maximale Zeit für eine vollständige Antwort. Standardmäßig 10 Sekunden. Danach gilt die URL als defekt, mit einer Zeitüberschreitungsmeldung.
- Verbindungszeitlimit: maximale Zeit für den Verbindungsaufbau. Standardmäßig 5 Sekunden. Eine Domain, deren DNS nicht mehr auflöst, scheitert hier.
- Gleichzeitige Anfragen: 1 bis 20, standardmäßig 6. Ein höherer Wert beschleunigt den Scan, erhöht aber die ausgehende Last und das Risiko einer Ratenbegrenzung durch entfernte Server.
- Interne URLs prüfen: standardmäßig an. Lokale URLs, die auf eine vorhandene statische Datei zeigen, werden ohnehin ohne Netzwerkanfrage validiert, diese Option betrifft also nur URLs, die durch den PrestaShop-Router laufen.
- Externe URLs prüfen: standardmäßig an. Abschalten ergibt einen sehr schnellen Scan, beschränkt auf Ihre eigenen Inhalte.
- Weiterleitungen folgen: standardmäßig an, maximal fünf Sprünge. Der Endcode ist dann der des Ziels.
- Weitergeleitete URLs als Warnung melden: standardmäßig an. Eine URL, die nach einer Weiterleitung 200 liefert, erscheint als Warnung. So erkennen Sie Links, die eine Aktualisierung verdienen, obwohl sie noch funktionieren.
- SSL-Zertifikate prüfen: standardmäßig aus. Aktivieren Sie es, wenn abgelaufene Zertifikate auffallen sollen, wobei manche schlecht konfigurierten Server dann als Fehler erscheinen.
- Nur aktive Elemente analysieren: standardmäßig aus. Einmal angehakt, fallen deaktivierte Produkte und Kategorien aus dem Umfang.
- User-Agent: die im Header gesendete Zeichenfolge. Manche Seiten antworten identifizierten Bots mit 403. Der Wert eines aktuellen Browsers löst einen guten Teil dieser Fälle.
Taktung und Batches
Sekunden Arbeit pro Batch legt fest, wie lange jeder Aufruf arbeitet. Standardmäßig 12 Sekunden. Dieser Wert muss deutlich unter der max_execution_time Ihres Hostings bleiben, Sicherheitsmarge eingerechnet.
Ausgeschlossene URLs
Ein Muster pro Zeile. Drei Schreibweisen sind möglich:
- Einfacher Text: Treffer auf einen Teilstring.
staging.meinedomain.deschließt jede URL aus, die diese Zeichenfolge enthält. - Platzhalter:
*steht für eine beliebige Zeichenfolge,?für ein einzelnes Zeichen.https://*.partner.tld/*schließt alle Subdomains des Partners aus. - Regulärer Ausdruck: Präfix
re:. Das Muster wird wie geschrieben angewendet, ohne Begrenzer.
Eine typische Liste sieht so aus:
localhost
127.0.0.1
staging.meinedomain.de
https://*.partner-netz.tld/*
re:^https://[a-z0-9-]+[.]internes-cdn[.]net/
Einen literalen Punkt als [.] zu schreiben umgeht Escaping-Probleme und entspricht der maskierten Form.
Ausgeschlossene URLs erscheinen in der Tabelle mit dem Status ignoriert und verbrauchen keine Anfrage.
Die Ergebnisse lesen
Die sechs Kennzahlen
- Gefundene URLs: eindeutige URLs aus allen Quellen
- Defekt: fehlgeschlagene URLs und Dateien, alle Kategorien zusammen
- Warnungen: Fälle, die einen Blick verdienen, ohne Dringlichkeit
- Defekte Bilder: unter den defekten jene, die in einem Bild-Tag eines Inhalts gefunden wurden
- Fehlende Dateien: unter den defekten die auf der Festplatte fehlenden Dateien
- In Ordnung: alles, was korrekt antwortet
Die Status
- In Ordnung: 2xx-Code oder lokal vorhandene Datei
- Warnung: Weiterleitung, 401, 403, 429, oder eine nach Weiterleitung erreichte URL bei aktivierter zugehöriger Option
- Defekt: 404, 410, weitere 4xx, 5xx, Zeitüberschreitung, DNS-Fehler, abgelehnte Verbindung oder fehlende Datei auf der Festplatte
- Ignoriert: URL, die von Ihren Ausschlüssen abgedeckt oder aus der Tabelle in die Ignorierliste gesetzt wurde
- Übersprungen: URL aus einer Kategorie, die Sie in den Einstellungen deaktiviert haben, intern oder extern
Die Tabelle sortiert nach Schwere, dann nach Anzahl der Verwendungen. Die im Katalog am weitesten verbreiteten Probleme stehen oben.
Filter und Suche
Der Statusfilter startet auf Nur Probleme, was defekte Einträge und Warnungen zusammenfasst. Die übrigen Filter betreffen den Ressourcentyp (Link, Bild, lokale Datei) und die Quelle. Das Suchfeld durchsucht sowohl die URL als auch die Fehlermeldung, so isolieren Sie etwa alle Connection timed out auf einmal.
Detail der Fundstellen
Das Augensymbol öffnet die Liste der Inhalte, die diese URL verwenden. Jede Zeile nennt:
- den Quelltyp (Produkte, CMS-Seiten, Marken und so weiter)
- den Namen des Elements und seine Kennung
- das betroffene Feld (
description,description_short,content) - die Sprache
- den Ankertext des Links oder das alt-Attribut eines Bildes
- einen Button Bearbeiten, der den Datensatz in einem neuen Tab öffnet
Eine URL, die in 34 Produktdatensätzen vorkommt, erscheint als eine einzige Tabellenzeile mit 34 Fundstellen im Detail. Sie sehen das Ausmaß, bevor Sie mit dem Korrigieren beginnen.
Korrigieren
Defekte Links in einem Inhalt
Öffnen Sie das Detail, klicken Sie bei der gewünschten Fundstelle auf Bearbeiten, korrigieren oder entfernen Sie den Link im Editor und speichern Sie. Kommt dieselbe URL in mehreren Sprachen desselben Produkts vor, wird jede Sprache einzeln gelistet: PrestaShop speichert je Sprache einen eigenen Inhalt, jede Fassung braucht also ihre Korrektur.
Fehlende Bilddateien
Diese Zeilen zeigen einen Pfad statt einer URL, zum Beispiel img/p/4/2/9/429.jpg. Die Datei ist weg, während die Datenbank sie noch referenziert. Drei Auswege:
- Die Datei liegt in einem Backup: stellen Sie sie am angezeigten Pfad wieder her.
- Das Bild existiert endgültig nicht mehr: löschen Sie es im Reiter Bilder des Produkts, damit die Datenbank es nicht länger referenziert, und laden Sie einen Ersatz hoch.
- Auch die Miniaturen fehlen: nach Wiederherstellung oder erneutem Hochladen regenerieren Sie sie unter Design, Bildeinstellungen.
PS_IMAGE_FORMAT als JPEG, WebP oder AVIF vorliegen. Das Modul wertet die Datei als vorhanden, sobald eine der Endungen jpg, jpeg, png, webp, avif oder gif gefunden wird. Als fehlend gemeldet wird sie nur, wenn keine dieser Varianten existiert.
Eine URL erneut prüfen
Das Aktualisieren-Symbol prüft eine einzelne Zeile erneut. Status und Code aktualisieren sich an Ort und Stelle, ohne den ganzen Scan neu zu starten. Praktisch, nachdem ein Partner eine Seite repariert hat oder Sie eine Datei wieder online gestellt haben.
Eine URL ignorieren
Das Verbotssymbol nimmt die URL in die Ignorierliste auf. Sie verschwindet aus der Tabelle und wird in späteren Scans nicht mehr gemeldet. Die Ignorierliste wird unabhängig von den Scans geführt und überlebt daher die automatische Bereinigung.
CSV-Export
Der Button CSV exportieren exportiert den Ergebnissatz genau so, wie er auf dem Bildschirm gefiltert ist. Die Datei nutzt das Semikolon als Trennzeichen und beginnt mit einem UTF-8 BOM, sodass Excel Umlaute direkt öffnet, ohne den Importassistenten.
Exportierte Spalten: URL, Typ, Bereich, Status, HTTP-Code, Fehler, Weiterleitung, Antwortzeit in Millisekunden, Anzahl der Verwendungen, Quellen, betroffene Elemente.
Große Kataloge und Performance
Wo die Zeit hingeht
Die Sammlung ist schnell, sie liest die Datenbank und parst HTML. Die Scandauer kommt fast vollständig aus der HTTP-Prüfung, genauer aus der Antwortzeit der entfernten Server. Zwei Mechanismen halten die Rechnung klein:
- Deduplizierung. Eine 400-mal vorkommende URL wird einmal geprüft. In einem Katalog, in dem derselbe Link zur Größentabelle in jedem Produkt steht, macht das einen erheblichen Unterschied.
- Lokale Validierung. Eine URL Ihrer eigenen Domain, die auf eine vorhandene statische Datei zeigt, wird über das Dateisystem validiert, ohne Netzwerkanfrage. Das deckt die meisten Bilder in Beschreibungen ab.
Empfohlene Einstellungen nach Größe
- Unter 500 Produkte: Standardwerte genügen, nichts ändern.
- 500 bis 5.000 Produkte: 6 bis 8 gleichzeitige Anfragen, 12 bis 15 Sekunden pro Batch.
- Über 5.000 Produkte: beginnen Sie mit einem Scan bei abgeschalteten externen URLs, um zuerst Ihre eigenen Links und Bilder abzuarbeiten, und starten Sie danach außerhalb der Geschäftszeiten einen vollständigen Scan.
Shared Hosting
Auf Shared Hosting senken Sie die gleichzeitigen Anfragen auf 2 oder 3 und bleiben bei 10 Sekunden pro Batch. Wenn das Frontend während eines Scans langsamer wird, schalten Sie die Prüfung interner URLs ab: lokale statische Dateien werden weiterhin auf der Festplatte geprüft, Sie verlieren nur den Test der URLs, die durch den Router laufen.
Multishop
Der Scanbereich folgt dem in der oberen Backoffice-Leiste gewählten Shop-Kontext. Tabellen mit einer Shop-Kennungsspalte wie ps_product_lang oder ps_category_lang werden entsprechend gefiltert. Für ein Netz aus drei Shops starten Sie drei Scans und wechseln dazwischen den Kontext.
Fehlerbehebung
Der Scan scheint in der Sammelphase festzuhängen
Die Sammlung zeigt keinen detaillierten Zähler, auf einem sehr großen Katalog kann sie deshalb eingefroren wirken, obwohl sie vorankommt. Prüfen Sie den Netzwerk-Tab Ihres Browsers: etwa alle zwölf Sekunden sollten Aufrufe aufeinanderfolgen. Liefert ein Aufruf einen Fehler 500, senken Sie die Sekunden Arbeit pro Batch und starten Sie erneut.
Viele 403 bei Links, die im Browser funktionieren
Cloudflare und Bot-Schutzsysteme blockieren Anfragen, die nicht als Browser erkannt werden. Ersetzen Sie den User-Agent durch eine aktuelle Chrome- oder Firefox-Zeichenfolge. Bleibt die Domain blockiert, nehmen Sie sie in die Ausschlüsse auf: das ist kein defekter Link, sondern ein Link, der sich per Skript nicht prüfen lässt.
Fehler SSL certificate problem
Das Zertifikat der entfernten Seite wird vom Zertifikatsspeicher Ihres Servers nicht validiert. Wenn Sie keine Zertifikatsprüfung brauchen, entfernen Sie den Haken bei SSL-Zertifikate prüfen. Betrifft die Meldung Ihre eigene Domain, ist das ein echtes Problem für die Serverseite.
Alle internen URLs melden Fehler
Ihr Server erreicht sich selbst nicht, häufig hinter einem Reverse Proxy oder bei besonderer interner DNS-Auflösung. Entfernen Sie den Haken bei Interne URLs prüfen. Fehlende Bilddateien und externe Links werden weiterhin normal erkannt.
Bilder werden als fehlend gemeldet, obwohl sie angezeigt werden
Prüfen Sie den in der Tabelle angezeigten Pfad. Existiert die Datei dort tatsächlich, liegt es fast immer an einer PHP-Leseeinschränkung: kontrollieren Sie die Rechte des Ordners img/ und die Direktive open_basedir.
Der Hinweis meldet, dass cURL nicht verfügbar ist
Die PHP-Erweiterung cURL ist auf Ihrem Hosting nicht installiert. Bitten Sie Ihren Hoster um Aktivierung. Bis dahin bleibt das Modul für fehlende Bilddateien auf der Festplatte nutzbar, die nicht über das Netzwerk laufen.
Technische Referenz
SQL-Tabellen
ps_dfbl_scan: ein Datensatz je Scan, mit Phase, Wiederaufnahmeposition und Zählernps_dfbl_url: die eindeutigen URLs eines Scans, mit Fingerabdruck, Status und HTTP-Ergebnisps_dfbl_occurrence: die Fundstellen, verknüpft mit einer URL und einem Katalog-Inhaltps_dfbl_ignore: die Ignorierliste, unabhängig von den Scans
Nur die letzten drei Scans bleiben erhalten. Beim Start eines neuen Scans werden ältere samt ihrer URLs und Fundstellen gelöscht.
Extrahierte Attribute
Das Modul liest im HTML Ihrer Inhalte folgende Attribute:
- Tag a:
href - Tag area:
href - Tag img:
src,data-src,data-original,data-lazy,srcset - Tags source und video:
src,srcset,poster - Tags audio, iframe, embed:
src - Tag object:
data - Tags link und script:
href,src - Attribut
style: diebackground-image: url(...)
Vor jeder Prüfung aussortiert werden: mailto:, tel:, sms:, callto:, javascript:, Daten-URIs, bloße Anker, andere Schemata als HTTP und HTTPS sowie jeder Wert mit geschweiften oder eckigen Klammern, die auf einen Smarty- oder Shortcode-Rest hindeuten.
Relative URLs werden gegen die Basis-URL des Shops aufgelöst, unter Beachtung der Segmente . und ... Protokollrelative URLs, die mit zwei Schrägstrichen beginnen, erben das Schema des Shops. Das Fragment nach der Raute wird vor der Anfrage entfernt.
Controller und Architektur
Ein einziger Admin-Controller, AdminDfBrokenLinks, liefert die Seite und die AJAX-Endpunkte. Das Modul deklariert keinen Hook. Die Klassen werden direkt eingebunden, ohne Composer und ohne externe Abhängigkeit.
Deinstallation
Deinstallieren Sie Broken Links & Images Checker im Modulmanager. Die vier Tabellen, der Backoffice-Reiter und sämtliche Konfigurationsschlüssel werden entfernt.
ps_dfbl_ignore wird bei der Deinstallation gelöscht. Wenn Sie eine lange Liste manueller Ausschlüsse aufgebaut haben, exportieren Sie sie oder kopieren Sie das Feld der ausgeschlossenen URLs vor der Deinstallation.
FAQ
Verändert das Modul meine Inhalte?
Nein. Es liest Ihre Inhalte und schreibt nur in seine eigenen Tabellen. Jede Korrektur läuft über das Standard-Backoffice von PrestaShop.
Kann ich einen automatischen Scan planen?
Version 1.0.0 startet Scans aus dem Backoffice, mit dem Browser als Taktgeber. Es gibt keine Cron-Aufgabe. In der Praxis genügt ein manuell gestarteter Scan pro Monat für die meisten Kataloge.
Warum erscheint eine URL als Warnung, obwohl sie 200 liefert?
Weil sie nach einer Weiterleitung erreicht wurde und die Option Weitergeleitete URLs als Warnung melden aktiv ist. Der Link funktioniert, kostet Ihre Besucher und Google aber einen unnötigen Sprung. Die Ziel-URL direkt in den Inhalt zu schreiben ist besser.
Erkennt das Modul Links in Drittmodulen?
Es analysiert Inhalte aus den Standardtabellen von PrestaShop sowie die Linkblöcke von ps_linklist. Ein Drittmodul, das seine eigenen Texte in eigenen Tabellen speichert, ist nicht abgedeckt.
Verbrauchen Scans viel Bandbreite?
Jede Prüfung beginnt mit einer HEAD-Anfrage, die nur die Header holt. Der GET-Fallback, genutzt wenn der entfernte Server HEAD ablehnt, begrenzt den Download auf die ersten zwei Kilobyte. Das Volumen bleibt marginal.
Wie viele Scans werden aufbewahrt?
Die letzten drei. Genug, um einen Zustand vor und nach der Korrektur zu vergleichen, ohne die Datenbank endlos wachsen zu lassen.
Ist das Modul DSGVO-konform?
Es speichert keine personenbezogenen Daten, nur URLs, HTTP-Codes und Verweise auf Ihre Inhalte. An DataFirefly wird nichts übermittelt.