2017-04-18 1 views
0

Wie der Stack-Überlauf funktioniert.So leiten Sie die URL um, ohne die Eingabe-URL zu kennen

Also, wenn die alte URL lautet: /product-old-url_152 und dann wechselt sie in /product-new-url_152, dann sind die folgenden URLs würden alle umleiten hier:

/product-old-url_152

/product-some-other-url_152

würden beide Umleitung auf:

/product-new-url_152

Was ist der beste Weg zu tun Dies?

BEARBEITEN: 152 ist die ID des Posts in der Datenbank.

Antwort

2

Eine Möglichkeit, dies zu tun:

Extrahieren Sie die ID von der angeforderten URL

if (preg_match('/product-(.*)_(\d+)$/', $_SERVER['REQUEST_URI'], $matches)) { 
    $old = $matches[1]; 
    $id = $matches[2]; 

Lookup die neue URL in der Datenbank

$slug = fetch_slug_from_database($id); 

und eine Umleitung an den Client senden, Wenn sich die URL geändert hat

if ($slug !== $old) { 
     header("Location: /product-$slug-$id"); 
     exit; 
    } 
} 
+0

Und denken Sie daran, eine Überprüfung hinzuzufügen, dass Sie nicht bereits auf der neuen URL sind, oder Sie werden in einer Schleife stecken bleiben. – iainn

+0

@iainn Danke für Spotting, behoben. –

+0

@OlafDietsche Danke dafür. Werde definitiv auf Implementierung achten. –

Verwandte Themen