Titel vergleichen

Mach am besten Folgendes: zerleg den URL-Pfad in die relevanten Bestandteile, suche nach dem dazugehörigen Datensatz und leite bei Bedarf weiter:
PHP:
if( !preg_match('@/id-([1-9][0-9]*)-[^/.]+\.html$@', $_SERVER['REQUEST_URI'], $match) ) {
	// falsches URL-Format
	header($_SERVER['SERVER_PROTOCOL'].' 400 Bad Request');
	exit;
}

$query = '
	SELECT
	        `url-slug`,
	        …
	  FROM
	        …
	  WHERE
	        `id` = '.$match[1].'
	';
$result = mysql_query($query);
if( !mysql_num_rows($result) ) {
	// kein passender Datensatz gefunden
	header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found');
	exit;
}

$row = mysql_fetch_assoc($result);
$urlPath = 'id-'.$match[1].'-'.$row['url-slug'].'.html';
if( basename($_SERVER['REQUEST_URI']) != $urlPath ) {
	// falscher URL, Weiterleitung auf richtigen
	header('Location: http://'.$_SERVER['SERVER_NAME'].'/'.$urlPath, true, 301);
	exit;
}

// …
Die „url-slug“-Spalte entspricht dabei dem zusätzlichen, vorgegebenen URL-Bestanteil (in diesem Fall „seitentitel“).
 
Ja das Ergebnis stimmt. Aber es passiert nichts, wenn der Titel im Link falsch ist.

Das Ergebnis ist dann auch falsch.

Aufruf von - /id-1234-seitentitel.html
Ergebnis - /id-1234-seitentitel.html

Aufruf von - /id-1234-seientitel.html (diese URL gibt es nicht)
Ergebnis - /id-1234-seientitel.html (diese URL gibt es nicht)
 
so richtig versteh ich nicht was du willst. Wie kannst dir überhaupt etwas anzeigen was es gar nicht gibt? Wenn es die Seite gar nicht gibt kann doch nur nen Fehler kommen à La "Seite nicht gefunden" wie kann der dir da "nicht das richtige Anzeigen" ?
Ich mein, entweder gibt es eine Daten http://www.irgendwas.de/id1234-Hallo.html, dann kann er aber http://www.irgendwas.de/id1234-Holla.html nicht anzeigen wenns die nicht gibt.
Kann man sich das irgendwo anschauen was du da willst?
 
Sorry, wenn das kein Mensch versteht.

Also - meine Links auf der Seite sahen voher so aus -

id-123.html.

Dann habe ich zusätzlich den Titel des Eintrags mit in den Link gepackt.

Und das schaut nun so aus -

id-123-titelvomeintrag.html

So, nun lassen sich aber beide Varianten aufrufen, was ja nicht Sinn der Sache ist.

Er ruft die ID auf - auch wenn der Titel nicht im Link steht. Das soll er aber nicht, sondern nur wenn auch der Titel im Link steht. Vielleicht ist diese Erklärung besser.
 
Die Frage ist warum?
Warum hast du die Titel mit rein genommen? Wenn du möchtest, dass eine Seite, wo der Titel falsch ist, aber die ID richtig ist, über die ID aufgerufen werden soll, brauchst du den Titel nicht in der URL. Und welchen User interessiert es, ob jetzt der Titel in der URL steht? Es macht zwar vielleicht ein unterschied für dich, aber nur, weil es ein Aufwand ist, den du dir nicht machen musst.
 
Morgen,

nen Link hat nen Ziel und entweder das Ziel existiert oder nicht. Nur um sicher zu stellen das ich das wirklich verstehe, du hast einen Link
PHP:
<a href="id-123.html">id-123.html</a>
und einen Link:
PHP:
<a href="id-123-titelvomeintrag.html">id-123-titelvomeintrag.html</a>
und bei beiden Links wird die selbe Seite angezeigt? Und das geht wirklich? Wie machst denn das? relative Pfadangabe, ok. Aber relative Dateiangabe ist mir neu. Wette da liegt auch der Knackpunkt.
 
Zurück