First-Party Tracking mit Netlify
Richten Sie einen First-Party-Proxy auf Netlify mit einfachen Weiterleitungsregeln ein. Funktioniert mit jeder statischen Website oder jedem Framework.
Schwierigkeit: Einfach - Fügen Sie einfach ein paar Zeilen zu einer Konfigurationsdatei hinzu.
Warum dies funktioniert (Same-Origin)
Dieser Ansatz verwendet /api/_z/script.js, die sich auf der gleichen Herkunft wie Ihre Website befindet. Firefox ETP und andere Trackingschutzmaßnahmen blockieren nur Cross-Origin-Anfragen.
- Browser sieht:
yourdomain.com/api/_z/script.js→ Gleiche Herkunft ✅ - Netlify leitet die Anfrage serverseitig an den Zenovay-Server weiter (Browser sieht dies nicht)
- Alle Trackingschutzmaßnahmen werden umgangen, da die Anfrage First-Party ist
Bevor Sie beginnen
Stellen Sie sicher, dass Sie haben:
- Ein Projekt, das auf Netlify bereitgestellt ist
- Ihren Zenovay-Tracking-Code (zu finden unter Domains → Ihre Website → Allgemein, in der Tracking-Skript-Karte)
- Zugriff auf die Build-Konfiguration Ihres Projekts
Format Ihres Tracking-Codes
Ihr Tracking-Code sieht wie folgt aus: ZV_XXXXXXXXXX
- Beginnt mit
ZV_ - Gefolgt von 10 Zeichen (Buchstaben und Zahlen)
- GROSS-/KLEINSCHREIBUNG BEACHTEN - kopieren Sie ihn genau
- Beispiel:
ZV_Q8U0GYD70WR

Option 1: Verwenden Sie die _redirects-Datei (Am einfachsten)
Der einfachste Weg zur Einrichtung des Proxys ist die Verwendung von Netlifys _redirects-Datei.
Schritt 1: Erstellen Sie die Weiterleitungsdatei
Erstellen Sie eine _redirects-Datei in Ihrem public/-Ordner (oder wo immer sich Ihre statischen Assets befinden):
# Zenovay First-Party-Tracking-Proxy
/api/_z/* https://api.zenovay.com/fp/:splat 200Wie es funktioniert: Der Status-Code 200 macht dies zu einem Rewrite (Proxy) anstelle einer Umleitung. Der Browser sieht Ihre Domain, aber Netlify ruft die Zenovay API im Hintergrund ab.
Schritt 2: Fügen Sie das Tracking-Skript hinzu
<script defer
data-tracking-code="YOUR_TRACKING_CODE"
src="/api/_z/script.js">
</script>Schritt 3: Bereitstellen
netlify deploy --prodOder führen Sie ein Push zu Ihrem Git-Repository durch, falls Sie kontinuierliche Bereitstellung konfiguriert haben.
Option 2: Verwenden Sie netlify.toml (Expliziter)
Für komplexere Konfigurationen verwenden Sie netlify.toml:
Schritt 1: Erstellen oder aktualisieren Sie netlify.toml
Fügen Sie die Weiterleitungsregel zu Ihrer netlify.toml im Projektstammverzeichnis hinzu:
# Zenovay First-Party-Tracking-Proxy
[[redirects]]
from = "/api/_z/*"
to = "https://api.zenovay.com/fp/:splat"
status = 200
force = trueWenn Sie bereits eine netlify.toml haben, fügen Sie die Umleitung zu Ihrer vorhandenen Datei hinzu:
[build]
command = "npm run build"
publish = "dist"
# Zenovay First-Party-Tracking-Proxy
[[redirects]]
from = "/api/_z/*"
to = "https://api.zenovay.com/fp/:splat"
status = 200
force = true
# Ihre anderen Umleitungen...
[[redirects]]
from = "/*"
to = "/index.html"
status = 200Reihenfolge ist wichtig! Platzieren Sie die Zenovay-Umleitung VOR eventuellen Catch-All-Umleitungen (wie SPA-Fallbacks). Netlify verarbeitet Umleitungen in der angegebenen Reihenfolge.
Schritt 2: Fügen Sie das Tracking-Skript hinzu
<script defer
data-tracking-code="YOUR_TRACKING_CODE"
src="/api/_z/script.js">
</script>Schritt 3: Bereitstellen
netlify deploy --prodFramework-spezifische Beispiele
React (Create React App)
/api/_z/* https://api.zenovay.com/fp/:splat 200<!DOCTYPE html>
<html lang="en">
<head>
<script defer data-tracking-code="YOUR_TRACKING_CODE" src="/api/_z/script.js"></script>
<!-- other head elements -->
</head>
<body>
<div id="root"></div>
</body>
</html>Vue.js (Vite)
/api/_z/* https://api.zenovay.com/fp/:splat 200<!DOCTYPE html>
<html lang="en">
<head>
<script defer data-tracking-code="YOUR_TRACKING_CODE" src="/api/_z/script.js"></script>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>
</html>Gatsby
[build]
command = "gatsby build"
publish = "public"
[[redirects]]
from = "/api/_z/*"
to = "https://api.zenovay.com/fp/:splat"
status = 200
force = trueimport React from 'react'
export const onRenderBody = ({ setHeadComponents }) => {
setHeadComponents([
<script
key="zenovay"
defer
data-tracking-code="YOUR_TRACKING_CODE"
src="/api/_z/script.js"
/>
])
}Hugo
/api/_z/* https://api.zenovay.com/fp/:splat 200<script defer data-tracking-code="YOUR_TRACKING_CODE" src="/api/_z/script.js"></script>11ty (Eleventy)
/api/_z/* https://api.zenovay.com/fp/:splat 200Stellen Sie sicher, dass _redirects beim Build kopiert wird, indem Sie Ihre .eleventy.js hinzufügen:
module.exports = function(eleventyConfig) {
eleventyConfig.addPassthroughCopy("src/_redirects");
// ... rest of config
}Überprüfen Sie, ob es funktioniert
Überprüfung im Netlify-Dashboard
- Gehen Sie zu Ihrer Website im Netlify-Dashboard
- Klicken Sie auf Sitenkonfiguration → Umleitungen
- Sie sollten Ihre
/api/_z/*-Umleitung aufgelistet sehen
Überprüfen Sie den Netzwerk-Tab
- Besuchen Sie Ihre bereitgestellte Website
- Öffnen Sie DevTools (F12)
- Gehen Sie zum Netzwerk-Tab
- Laden Sie die Seite neu
- Suchen Sie nach
/api/_z/script.js
Sie sollten sehen:
- Status: 200
- Domain: Ihre Netlify-Domain
- Response: JavaScript-Code
Test im Firefox Strikten Modus
- Öffnen Sie Firefox
- Einstellungen → Datenschutz und Sicherheit → Verbesserter Tracking-Schutz: Streng
- Besuchen Sie Ihre Website
- Stellen Sie sicher, dass das Skript erfolgreich geladen wird
Fehlerbehebung
Umleitung gibt 404 zurück
Ursache: Die _redirects-Datei wird nicht veröffentlicht oder befindet sich am falschen Ort.
Lösung:
- Stellen Sie sicher, dass
_redirectssich in Ihrem Veröffentlichungsverzeichnis befindet (normalerweisepublic/oderdist/) - Für Build-Tools müssen Sie sicherstellen, dass die Datei während des Builds kopiert wird
- Überprüfen Sie im Netlify-Dashboard → Umleitungen, ob es erkannt wird
Umleitung verursacht eine Schleife
Ursache: Eine andere Umleitung verursacht eine Störung.
Lösung:
- Verwenden Sie
force = trueinnetlify.toml, um andere Regeln zu außer Kraft zu setzen - Stellen Sie sicher, dass die Zenovay-Umleitung VOR Catch-All-Regeln kommt
- Überprüfen Sie auf konfliktierende
_redirects- undnetlify.toml-Regeln
Skript wird geladen, gibt aber HTML zurück
Ursache: Eine Catch-All-SPA-Umleitung fängt die Anfrage ab.
Lösung: Platzieren Sie die Zenovay-Umleitung VOR Ihrem SPA-Fallback:
# Dies MUSS zuerst kommen
[[redirects]]
from = "/api/_z/*"
to = "https://api.zenovay.com/fp/:splat"
status = 200
force = true
# SPA-Fallback kommt danach
[[redirects]]
from = "/*"
to = "/index.html"
status = 200Geolokalisierung zeigt den falschen Standort an
Ursache: Netlify's Proxy leitet die Client-IP nicht automatisch weiter.
Lösung: Leider unterstützen einfache Netlify-Umleitungen keine benutzerdefinierten Header. Die Geolokalisierung basiert auf dem Standort des Netlify-Kanten-Servers. Für genaue Geolokalisierung sollten Sie Folgendes in Betracht ziehen:
- Verwendung von Netlify Functions (Edge Functions) - komplexeres Setup
- Verwendung von Cloudflare Workers vor Netlify
Erweitert: Verwenden Sie Netlify Edge Functions
Für mehr Kontrolle (einschließlich IP-Weiterleitung) können Sie Netlify Edge Functions verwenden:
import type { Context } from '@netlify/edge-functions'
export default async (request: Request, context: Context) => {
const url = new URL(request.url)
const path = url.pathname.replace('/api/_z/', '')
const targetUrl = `https://api.zenovay.com/fp/${path}${url.search}`
// Get client IP
const clientIP = context.ip || ''
const headers = new Headers(request.headers)
headers.set('X-Zenovay-Real-IP', clientIP)
headers.delete('Host')
const response = await fetch(targetUrl, {
method: request.method,
headers: headers,
body: request.body,
})
const responseHeaders = new Headers(response.headers)
responseHeaders.set('Access-Control-Allow-Origin', '*')
return new Response(response.body, {
status: response.status,
headers: responseHeaders,
})
}
export const config = {
path: '/api/_z/*',
}Vollständiges Beispiel
my-netlify-site/
├── netlify.toml
├── public/
│ ├── _redirects
│ └── index.html
├── src/
│ └── ...
└── package.json[build]
command = "npm run build"
publish = "dist"
[[redirects]]
from = "/api/_z/*"
to = "https://api.zenovay.com/fp/:splat"
status = 200
force = true<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>My Site</title>
<script defer data-tracking-code="YOUR_TRACKING_CODE" src="/api/_z/script.js"></script>
</head>
<body>
<div id="app"></div>
</body>
</html>Abschließende Checkliste
Bevor Sie fertig sind, überprüfen Sie ALLE diese Punkte:
-
_redirectsodernetlify.tomlhat die Zenovay-Weiterleitungsregel - Weiterleitungsregel kommt VOR eventuellen SPA-Catch-All-Regeln
- Script-Tag verwendet
/api/_z/script.js(nicht die direkte Zenovay-URL) -
data-tracking-code-Attribut enthält Ihren korrekten Tracking-Code - Projekt wird bereitgestellt (nicht nur lokal ausgeführt)
- In Firefox mit Enhanced Tracking Protection auf Streng getestet
- Besuche erscheinen im Zenovay-Dashboard
Nächste Schritte
- Benutzerdefinierte Ereignisse - Verfolgen Sie Benutzerinteraktionen
- Besucher-Identifikation - Verknüpfen Sie Analysen mit Benutzern
- Troubleshooting - Weitere Hilfe bei Problemen