Weiterleitungen bei Vercel und Netlify
Bei Vercel und Netlify fasst du keine Webserver-Konfiguration an. Weiterleitungen stehen in einer Datei in deinem Repository oder im Dashboard, und das Edge-Netzwerk der Plattform liefert sie aus. So funktionieren beide – und hier unterscheiden sie sich.
Auf einen Blick
| Vercel | Netlify | |
|---|---|---|
| Konfigurationsdatei | vercel.json | _redirects oder netlify.toml |
| Standard-Status | 308 (permanent ist standardmäßig true) | 301 |
| Parameter | :slug, :path*, Regex | :platzhalter, * mit :splat |
| Vorhandene Dateien | Redirects werden vor dem Dateisystem geprüft | Vorhandene Dateien gewinnen, außer du erzwingst die Regel mit ! |
| Domain-Weiterleitungen | Project Settings → Domains | www/Apex automatisch, Aliase per Regel |
Vercel: Weiterleitungen in der vercel.json
Die vercel.json liegt im Hauptverzeichnis deines Projekts. Jeder Eintrag braucht eine source und eine destination:
{
"redirects": [
{ "source": "/ueber-uns", "destination": "/about" },
{ "source": "/blog/:slug", "destination": "/news/:slug", "permanent": true },
{ "source": "/docs/:path*", "destination": "https://docs.example.com/:path*" },
{ "source": "/sale", "destination": "/angebote", "permanent": false },
{ "source": "/legacy", "destination": "/", "statusCode": 301 }
]
}
permanentist optional und standardmäßigtrue– das ergibt einen308. Mitfalsebekommst du einen307.- Mit
statusCodelegst du den Code ausdrücklich fest (301, 302, 303, 307 oder 308). Nutz das stattpermanent. :slugpasst auf genau ein Pfadsegment,:path*auf beliebig viele. Reguläre Ausdrücke gehen auch, etwa"/post/:id(\\d+)".- Mit
hasundmissingprüfst du Host, Header, Cookies oder Query-Parameter.
Einen Host leitest du in der vercel.json zum Beispiel so um:
{
"redirects": [
{
"source": "/:path*",
"has": [{ "type": "host", "value": "alt.example.com" }],
"destination": "https://example.com/:path*",
"permanent": true
}
]
}
Deployst du eine Next.js-App, kannst du dieselben Regeln auch in redirects() in der next.config.js anlegen, siehe Next.js-Ratgeber. Pflege sie aber nur an einer Stelle. Vercel begrenzt die Zahl der Routen in der vercel.json; für sehr lange Listen schau dir die Bulk-Redirect-Optionen in der Vercel-Dokumentation an oder nutz eine Middleware mit Nachschlagetabelle.
Versteckte Weiterleitungen bei Vercel
Zwei Optionen in der vercel.json erzeugen Redirects ohne eigene Regel:
{
"cleanUrls": true,
"trailingSlash": false
}
cleanUrls: true liefert /about.html unter /about aus und leitet die .html-Variante per 308 weiter. trailingSlash bestimmt, ob /about/ auf /about umgeleitet wird (false) oder umgekehrt (true). Zeigen deine eigenen Regeln auf die jeweils andere Schreibweise, kommt ein zusätzlicher Sprung dazu.
Vercel: Domain-Weiterleitungen im Dashboard
Für www/ohne www oder eine alte Domain brauchst du keinen Code. Füg beide Domains unter Project → Settings → Domains hinzu, bearbeite die Domain, die weiterleiten soll, und wähl Redirect to mit deiner Hauptdomain. Den Statuscode kannst du auswählen; für einen dauerhaften Umzug nimm 301 oder 308. Pfad und Query-String bleiben erhalten, www.example.com/preise?plan=pro landet also auf example.com/preise?plan=pro. Die Weiterleitung von HTTP auf HTTPS übernimmt Vercel automatisch mit einem 308.
Netlify: die Datei _redirects
Die Datei _redirects muss nach dem Build im Publish-Verzeichnis liegen. Bei vielen Frameworks legst du sie deshalb in public/ oder static/ ab, damit sie mitkopiert wird. Jede Zeile folgt dem Muster von nach [status][!]:
# Einzelne Seite, 301 ist der Standard
/ueber-uns /about
# Statuscode ausdrücklich angeben
/sale /angebote 302
/alter-feed /feed.xml 301
# Platzhalter
/news/:jahr/:monat/:slug /blog/:slug 301
# Splat: alles unterhalb von /blog/ behält seinen Restpfad
/blog/* /artikel/:splat 301
# Query-Parameter
/store id=:id /produkte/:id 301
# Alte Domain auf neue Domain, erzwungen
https://alt.example.com/* https://example.com/:splat 301!
# Rewrite (URL bleibt gleich) und eigene 404-Seite
/api/* https://api.example.com/:splat 200
/* /404.html 404
Netlify liest die Regeln von oben nach unten und nimmt den ersten Treffer. Spezielle Regeln gehören also nach oben, Sammelregeln wie /* ans Ende. Der Status 200 ist übrigens kein Redirect, sondern ein Rewrite: Der Besucher bleibt auf der ursprünglichen URL.
Shadowing und Erzwingen mit „!“
Standardmäßig wird eine Regel ignoriert, wenn unter dem angefragten Pfad eine Datei existiert. Das nennt sich Shadowing. Liegt /ueber-uns/index.html noch in deinem Build, greift die Regel /ueber-uns /about nie. Du hast zwei Möglichkeiten: Lösch die alte Datei oder erzwing die Regel mit einem Ausrufezeichen:
/ueber-uns /about 301!
Setz das Erzwingen bewusst ein. Ein erzwungenes /* /index.html 200! für eine Single-Page-App würde auch deine CSS- und JavaScript-Dateien umschreiben.
Netlify: Weiterleitungen in der netlify.toml
Dieselben Regeln kannst du auch in die netlify.toml im Hauptverzeichnis des Repositorys schreiben. Die Syntax ist ausführlicher, dafür hast du Build-Einstellungen und Weiterleitungen an einem Ort:
[[redirects]]
from = "/blog/*"
to = "/artikel/:splat"
status = 301
[[redirects]]
from = "/ueber-uns"
to = "/about"
status = 301
force = true
[[redirects]]
from = "/shop/*"
to = "/de/shop/:splat"
status = 302
conditions = {Country = ["de", "at"]}
Nutzt du beide Dateien, verarbeitet Netlify zuerst die Regeln aus _redirects und danach die aus der netlify.toml. force = true entspricht dem !. Über conditions kannst du nach Land, Sprache, Rolle oder vorhandenem Cookie weiterleiten. Geh damit aus SEO-Sicht sparsam um: Der Googlebot crawlt überwiegend von US-Adressen aus und sieht dann immer nur eine Variante.
Domains bei Netlify
Legst du eine primäre Domain fest, leitet Netlify das Gegenstück mit oder ohne www automatisch dorthin weiter – und sobald ein Zertifikat aktiv ist, auch HTTP auf HTTPS. Weitere Domain-Aliase liefern dagegen standardmäßig einfach denselben Inhalt aus. Um einen Alias wie deine alte Domain weiterzuleiten, schreib eine erzwungene Regel mit vollständiger URL, wie im Beispiel https://alt.example.com/* oben.
Welchen Statuscode solltest du nehmen?
- Dauerhaft umgezogen:
301oder308. Beide vererben PageRank und sind für Google ein starkes Signal, das Ziel zu indexieren. - Vorübergehend:
302oder307, etwa für eine Aktionsseite oder während einer Wartung. - Ersatzlos entfernt: keine Weiterleitung, sondern
404oder410. Leitest du alles auf die Startseite um, wertet Google das als Soft 404.
Die Details findest du unter 301 vs. 302 und 307 vs. 308.
Nach dem Deployment testen
Beide Plattformen führen Weiterleitungen am Edge aus, dein lokaler Dev-Server zeigt sie also womöglich gar nicht. Prüf nach jedem Deployment ein paar URLs mit dem Redirect-Checker: Du willst genau einen Sprung mit dem erwarteten Statuscode sehen. Achte auf zusätzliche Sprünge durch Slashes am Ende oder die www-Weiterleitung. Für lange Listen alter URLs spart dir der Bulk-Checker Zeit. Ziehst du eine komplette Domain um, hilft dir die Checkliste zum Domain-Umzug.
Häufige Fragen
- Warum sendet Vercel 308 statt 301?
In der
vercel.jsonistpermanentstandardmäßigtrue, und das bedeutet308. Das ist die dauerhafte Weiterleitung, bei der die Anfragemethode erhalten bleibt; Google behandelt sie wie einen 301. Brauchst du einen 301, setz"statusCode": 301.- Warum ignoriert Netlify meine Weiterleitung?
Meist existiert unter dem alten Pfad noch eine Datei (Shadowing), oder die
_redirectsliegt nach dem Build nicht im Publish-Verzeichnis. Lösch die alte Datei oder erzwing die Regel mit301!. Prüf außerdem, ob eine weiter oben stehende Regel schon vorher greift.- Was bedeutet :splat bei Netlify?
:splatsetzt ein, was das*in der Quelle erfasst hat./blog/* /artikel/:splat 301leitet/blog/2024/beitragauf/artikel/2024/beitragweiter.- Ist eine 200-Regel bei Netlify eine Weiterleitung?
Nein, das ist ein Rewrite (Proxy). Die URL im Browser bleibt gleich, der Inhalt kommt vom Ziel. Suchmaschinen indexieren die ursprüngliche URL.
Passende Ratgeber
-
.htaccess-Weiterleitung auf Apache
So leitest du einzelne Seiten und ganze Domains per .htaccess weiter: mod_alias oder mod_rewrite, fertige Regeln für die typischen Fälle und wie du Schleifen und Ketten vermeidest.
-
Weiterleitungen mit nginx
Fertige nginx-Konfiguration für 301-Weiterleitungen: einzelne Seiten, Muster, ganze Domains, HTTPS und www in einem Hop und Hunderte URLs per map.
-
Weiterleitungen mit Cloudflare
Cloudflare kann Weiterleitungen direkt am Edge beantworten, bevor eine Anfrage deinen Server erreicht. So funktionieren Single Redirects, Bulk Redirects und Always Use HTTPS – und so verhinderst du, dass sie sich mit deinem Server in die Quere kommen.
-
Weiterleitungen in WordPress
In WordPress kannst du URLs auf mehreren Wegen weiterleiten: per Plugin, per Regel in der .htaccess oder mit ein paar Zeilen PHP. Hier erfährst du, welcher Weg wann passt und wie du die typischen Stolperfallen mit Caching und HTTPS umgehst.
-
Weiterleitungen in Next.js
In Next.js kannst du an vier Stellen weiterleiten: in der Konfiguration, in der Middleware, im Servercode des App Routers und über die Option trailingSlash. Jede davon sendet standardmäßig andere Statuscodes – es lohnt sich also, die Unterschiede zu kennen.
-
Weiterleitungen mit Microsoft IIS
IIS bietet dir zwei Wege für Weiterleitungen: die eingebaute HTTP-Umleitung und das URL-Rewrite-Modul. Hier erfährst du, wann du welches nimmst – mit web.config-Beispielen zum Kopieren.