Auch wenn es niemanden interessieren wird, für die Nachwelt: jeder kennt wahrscheinlich das Problem, das URLs auch mal geändert werden, und dann falsch im Google-Index stehen. Um das zu verhindern kann man entweder Canonical-Tags verwenden oder einen 301-redirect, der anzeigt, das das Dokument dauerhauft unter einer anderen Adresse erreichbar ist. PCTweaks.de ist jetzt mit einer solchen Funktion ausgestattet, die wie folgt funktioniert:
PHP-Code:
//SEO für News, sid: ID des Artikels, wird beim Aufruf eines Artikels übergeben
function seo($sid) {
if ($sid == '') {
} else {
$anfrage_seo = mysql_query("SELECT title FROM pctweaks_news WHERE sid = $sid");
$seo_url = mysql_fetch_array($anfrage_seo);
$titlestring = urlString($seo_url[0]);
$url_seofied = "http://www.pctweaks.de/news/".$titlestring.'/'.$sid;
if ($url_seofied == "http://www.pctweaks.de".$_SERVER[REQUEST_URI]) {
} else {
header("HTTP/1.1 301 Moved Permanently");
header( "Location:".$url_seofied );
}
}
}
Ergebnis: selbst http://www.pctweaks.de/index.php?i=b...139&inhaltid=0 wird korrekt zu http://www.pctweaks.de/tests/belkin-dsl-router/139/0
Der Vollständigkeit halber auch noch die Funktion, die aus den Headlines mit Umlauten passende Strings für URLs baut:
PHP-Code:
function urlString($title) {
// String bearbeiten
$title = StrToLower($title);
$title = mb_convert_encoding($title, 'UTF-8', 'ISO-8859-15'); //kann wahrscheinlich weggelassen werden
$title = eregi_replace("/","-",$title);
$title = eregi_replace(" - ","-",$title);
$title = eregi_replace(", ","-",$title);
$title = eregi_replace(" ","-",$title);
$title = eregi_replace(":","-",$title);
$title = eregi_replace("ü","ue",$title);
$title = eregi_replace("ä","ae",$title);
$title = eregi_replace("ö","oe",$title);
$title = eregi_replace("ß","ss",$title);
$title = eregi_replace("&","und",$title);
$title = eregi_replace("\+","und",$title);
$title = eregi_replace("\[","",$title);
$title = eregi_replace("\]","",$title);
$title = eregi_replace("\?", "", $title);
$title = eregi_replace("\!", "", $title);
$title = eregi_replace("--","-",$title);
$title = eregi_replace("--","-",$title);
$title = eregi_replace("--","-",$title);
// Rückgabewert, beinhaltet die korrekte URL
return $title;
}