fix(analytics): normalise Matomo base URL trailing slash #26
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/matomo-url-normalisation"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Der eigentliche Punkt ist nicht der lokale Konsolenfehler, sondern dass die
.env.productionim Repo von dem abweicht, was im laufenden Produktionscontainer steht. Produktion hat die URL mit Schrägstrich und trackt, das Repo hat sie ohne. Der nächste Deploy hätte das Tracking abgeschaltet, ohne eine Fehlermeldung zu erzeugen. Die Zahlen wären einfach ausgeblieben, und das ausgerechnet bei der Messgrundlage, an der die Wirkung des Website-Relaunches gemessen werden soll. Matomo wurde am 2026-08-12 gerade erst betriebsfähig gemacht.Gelöst wurde es nicht durch Nachziehen des Wertes, sondern durch Entfernen der Fehlerklasse: Das Template normalisiert die URL und funktioniert mit und ohne Schrägstrich. Dazu die Härtung gegen ungeprüfte Interpolation und ein korrigierter Kommentar in
config/custom.php, der bisher das Gegenteil behauptete.Änderungen
templates/_system/analytics.twig:matomoBaseUrlwird einmal oben ausmatomoUrlnormalisiert (|trim('/', 'right') ~ '/'), danach überall diese Variable verwendet statt der rohen Config. ZusätzlichmatomoBaseUrlundmatomoSiteIdmit|e('js')escaped, da beide in JS-String-Literale interpoliert werden.config/custom.php: Kommentar korrigiert, der bisher einen abschließenden Schrägstrich verlangte, obwohl das nicht mehr nötig ist.Verifikation
curlgegen die Startseite zeigt HTTP 200 und genau einen abschließenden Schrägstrich in der erzeugten Matomo-URL.MATOMO_URLversuchsweise ohne Schrägstrich gesetzt, Template erzeugt weiterhin die korrekte URL. Danach mit Schrägstrich erneut geprüft, ebenfalls korrekt..envund.env.productionwurden lokal ebenfalls korrigiert, sind aber über.gitignoreausgeschlossen und tauchen deshalb nicht im Diff auf. Keine Werte aus diesen Dateien werden hier genannt.Closes #24
🤖 Generated with Claude Code
The Matomo snippet in analytics.twig concatenated matomoUrl directly with 'matomo.php'/'matomo.js', which silently depends on the config value ending in a slash. .env.production carried the value without one, so the next deploy would have broken production tracking with ERR_NAME_NOT_RESOLVED (matomoUrl was still masking the bug locally by accident of custom.php's comment, not by design). Normalise once in the template via trim + append instead of relying on the raw env value's shape, so either form works from here on. Also escape matomoBaseUrl and matomoSiteId with |e('js') before they land in the inline script's string literals. Both come from env config rather than user input today, but that boundary is not a reason to skip the escaper Twig already ships for exactly this situation. Refs #24