00 Stimmen

HTACCESS: Teile einer URL als Parameter - Explode at Slash

Frage von Compi | 14.09.2017 um 10:00

Ich würde gerne alle Teile zwischen den Slashes einer URL als einzelne Parameter in PHP verwenden und bin gerade auf der Suche nach einer geeigneten .htaccess Routine.

Wenn zum Beispiel die folgende URL aufgerufen wird

example.com/param1/param2/param3

würde ich gerne unabhängig davon, was in param1, param2 oder param3 steht, die drei Variablen $param1, $param2 und $param3 in meinem PHP Skript bekommen:

$param1   // 'param1'
$param2   // 'param2'
$param3   // 'param3'

Wie ist das möglich? Habt ihr einen Tipp für mich? Ich bräuchte quasi so eine Art explode(), wie man es auch aus PHP kennt, aber für HTACCESS.

AntwortenPositivNegativDatumStimmen
1Beste Antwort1 Stimme

Am einfachsten wäre es, wenn du einfach die explode- Funktion von PHP benutzt.

Das könnte dann folgendermaßen aussehen:

$url = $_SERVER['HTTP_REQUEST_URI'];
$parts = explode('/', $s);

$param1 = $parts[1];
$param2 = $parts[2];
$param3 = $parts[3];

Mit $_SERVER['HTTP_REQUEST_URI'] bekommst du die komplette URI, in deinem Fall wäre das "/param1/param2/param3". Anschließend benutzen wir explode(), um die URI in ihre einzelnen Teile aufzuteilen und speichern diese in deine Parameter.

Wichtig an dieser Stelle ist es, dass wir den Index nicht bei 0 sondern bei 1 starten lassen, da die URI mit / beginnt und $parts[0] daher leer ist.
14.09.2017 um 10:09

AntwortenPositiv Negativ
00 Stimmen

Natürlich möchte ich dir aber auch nicht die Implementation mit einem HTACCESS-Rewrite vorenthalten. Die Rewrite-Rule könnte in diesem Fall folgendermaßen aussehen:

RewriteRule ^([^/]+)/([^/]+)/(.+)$ index.php?param1=$1&param2=$2&param3=$3

Mit [^/]+ matchen wir alles, was kein Slash ist. In PHP können wir dann mit $_GET[param1], $_GET[param2] und $_GET[param3] auf die einzelnen Teile zugreifen.

Dies funktioniert natürlich nur, wenn deine URL genau drei Teile hat. Falls nicht, solltest du am besten die PHP-Explode-Lösung nehmen, um es nicht zu kompliziert zu machen. Wenn du nur wenige Möglichkeiten hast, zum Beispiel falls du nur URLs mit 1, 2 oder 3 Teilen hast, kannst du auch eine eigene Regel für jeden dieser Fälle analog meinem Beispiel hier in deine HTACCESS aufnehmen.
14.09.2017 um 10:12

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.