Skip to main content

Einführung

Laravel bietet mehrere Helper zur Erzeugung von URLs für Ihre Anwendung. Diese sind besonders nützlich beim Aufbau von Links in Templates oder API-Antworten sowie beim Generieren von Redirect-Antworten zu anderen Stellen Ihrer Anwendung.

Grundlagen

URL erzeugen

Mit dem Helper url erzeugen Sie beliebige URLs. Die generierten URLs verwenden automatisch das Schema (HTTP oder HTTPS) und den Host der aktuellen Anfrage.
Für URLs mit Query-String-Parametern nutzen Sie die Methode query.
Wenn Sie einen Parameter übergeben, der bereits im Pfad existiert, wird der bestehende Wert überschrieben.
Auch Array-Werte lassen sich als Query-Parameter übergeben. Sie werden korrekt indiziert und in der URL kodiert.

Aktuelle URL abrufen

Wenn Sie dem Helper url keinen Pfad übergeben, erhalten Sie eine Illuminate\Routing\UrlGenerator-Instanz mit Zugriff auf Informationen zur aktuellen URL.
Diese Methoden sind auch über die Facade URL verfügbar.

Vorherige URL abrufen

Manchmal möchten Sie die zuvor besuchte URL kennen. Dafür stellt der Helper url die Methoden previous und previousPath bereit.
Sie können die vorherige URL auch über die Session abrufen.
Ebenso lässt sich der Routenname der zuletzt besuchten URL über die Session ermitteln.

URLs für benannte Routen

Der Helper route erzeugt URLs für benannte Routen. Damit generieren Sie URLs unabhängig von der tatsächlichen Route-URL. Ändert sich die URL der Route, müssen Sie die Aufrufe von route nicht anpassen.
Um für diese Route eine URL zu erzeugen:
Auch Routen mit mehreren Parametern werden unterstützt.
Zusätzliche Array-Werte, die keinen Route-Parametern entsprechen, werden an den Query-String angehängt.

Eloquent-Modelle

Häufig verwenden Sie den Route-Key (üblicherweise den Primärschlüssel) eines Eloquent-Modells zur URL-Erzeugung. Sie können das Modell direkt als Parameterwert übergeben; route extrahiert den Route-Key automatisch.

Signierte URLs

Laravel erlaubt es, „signierte” URLs für benannte Routen zu erstellen. An diese URLs wird ein „Signature”-Hash angehängt, sodass Laravel prüfen kann, ob die URL nach der Erzeugung manipuliert wurde. Signierte URLs sind besonders praktisch für öffentliche, aber vor Manipulation zu schützende Routen. Ein Beispiel ist ein öffentlicher „Abmelde”-Link, den Sie per E-Mail an Kunden versenden. Mit der Methode signedRoute der Facade URL erstellen Sie signierte URLs.
Mit dem Argument absolute können Sie die Domain aus dem Signatur-Hash ausschließen.
Für eine URL, die nach einer bestimmten Zeit abläuft, verwenden Sie temporarySignedRoute. Beim Verifizieren prüft Laravel, dass der eingebettete Ablauf-Zeitstempel nicht überschritten wurde.

Ablauf der Verifizierung signierter URLs

Signierte Requests validieren

Um zu prüfen, ob eine eingehende Anfrage eine gültige Signatur besitzt, rufen Sie auf der Illuminate\Http\Request-Instanz hasValidSignature auf.
Sollen bestimmte Query-Parameter ignoriert werden, verwenden Sie hasValidSignatureWhileIgnoring.
Alternativ zur manuellen Prüfung können Sie die Middleware signed (Illuminate\Routing\Middleware\ValidateSignature) verwenden. Ohne gültige Signatur wird automatisch ein 403 zurückgegeben.
Enthält die signierte URL keine Domain, übergeben Sie der Middleware das Argument relative.

Reaktion auf ungültige signierte Routen

Wird eine abgelaufene signierte URL aufgerufen, erscheint die generische Fehlerseite mit Status 403. Passen Sie das Verhalten in bootstrap/app.php an, indem Sie eine eigene render-Closure für die Exception InvalidSignatureException definieren.

URLs zu Controller-Actions

Die Funktion action erzeugt die URL zu einer angegebenen Controller-Action.
Nimmt die Methode Route-Parameter entgegen, übergeben Sie diese als zweites Argument als assoziatives Array.

Fluent URI-Objekt

Die URI-Klasse von Laravel bietet eine fluent-Schnittstelle zum Erzeugen und Bearbeiten von URIs als Objekt.
Sobald Sie eine URI-Instanz haben, können Sie sie fluent modifizieren.

Default-Werte für URL-Parameter

Für bestimmte URL-Parameter möchten Sie eventuell requestweite Default-Werte setzen. Beispiel: Viele Routen enthalten einen {locale}-Parameter.
Bei jedem Aufruf von route explizit locale mitzugeben ist umständlich. Mit URL::defaults legen Sie für den aktuellen Request einen Standardwert fest. Diese Methode wird in der Regel innerhalb einer Route-Middleware aufgerufen, damit sie Zugriff auf den aktuellen Request hat.
Sobald ein Default für locale gesetzt ist, müssen Sie ihn bei route-Aufrufen nicht mehr übergeben.
Das Setzen von URL-Defaults kann Laravels implizites Model Binding beeinträchtigen. Sorgen Sie über die Middleware-Priorität dafür, dass Ihre Default-Middleware vor der SubstituteBindings-Middleware ausgeführt wird. In bootstrap/app.php konfigurieren Sie das über die Methode priority.
Zuletzt geändert am 20. Juli 2026