Antworten ohne Registrierung

URL aus Datenbank holen und auf die richtige Umleiten




Gast
15.12.2009, 22:12 Uhr
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. Techfacts.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 Techfacts_news WHERE sid = $sid");        
    
$seo_url mysql_fetch_array($anfrage_seo);            
    
$titlestring urlString($seo_url[0]);
    
$url_seofied "http://www.Techfacts.de/news/".$titlestring.'/'.$sid;
    if (
$url_seofied == "http://www.Techfacts.de".$_SERVER[REQUEST_URI]) {
        } else {
                
header("HTTP/1.1 301 Moved Permanently");     
                
header"Location:".$url_seofied );             
                        }
    }
    

Ergebnis: selbst

[Zur Link-Ansicht bitte registrieren.]

wird korrekt zu

[Zur Link-Ansicht bitte registrieren.]



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;
  } 
#1




little_peanut
15.12.2009, 23:29 Uhr
Hey Danke. Wollte mal ein Plugin für meinen Blog schreiben, dass die selbe Funktion übernimmt. Ist direkt gebookmarkt.
#2

Gast
16.12.2009, 08:34 Uhr
Zitat:
Zitat von little_peanut
Hey Danke. Wollte mal ein Plugin für meinen Blog schreiben, dass die selbe Funktion übernimmt. Ist direkt gebookmarkt.
Für Wordpress gibt es fertige Lösungen Und es ist auch noch nicht perfekt - hier in der Firma bekomme ich Fehlermeldungen, dass der Header bereits geschickt sei.

Edith sagt, dass aktiviertes Output buffering auch da hilft...
#3

little_peanut
16.12.2009, 09:08 Uhr
Ich weiß, dass da ein 301-Plugin schon dafür existiert. Aber ich war damit recht unzufrieden, weil es ziemlich unflexibel war (zumindest, als ich es damals probiert hab).
#4




Gast
16.12.2009, 10:20 Uhr
Und was noch ein Problem sein könnte: ein zusätzlicher Datenbank-Aufruf für jeden Artikelaufruf.
#5


Facebook

Jahresarchive