Sitemap mit PHP erstellen

Eine Sitemap zu haben, ist sehr wichtig. Sie dient bei einem größeren Web-Projekt nicht nur als Übersicht, sondern kann vor allen Dingen auch an Google und andere Suchmaschinen übermittelt werden. Eine Sitemap bildet dabei die Grundlage für den Crawler der Suchmaschine und sagt diesem auch, ob es neue oder aktualisierte Inhalte gibt. Ich zeige dir hier, wie du eine Sitemap mit PHP erstellen kannst.

Mit PHP lässt sich eine solche Sitemap automatisch erstellen. Wie das funktioniert, habe ich in diesem Artikel für dich beschrieben.

 

Eine Sitemap mit PHP erstellen lassen

Mit dem nachstehenden Script kannst du dir eine eigene Sitemap mit PHP erstellen lassen. Du musst lediglich einige Variablen entsprechend deiner Bedürfnisse anpassen. Du kannst dir hinterher die Sitemap ganz einfach anschauen. Öffne dazu einfach die Datei, in der das Script enthalten ist.

Das nachstehende Script habe ich gefunden auf http://www.plop.at/de/php.html. Die Credits für das Script (siehe Kommentarbereich im Code-Beispiel, sowie an einigen anderen Stellen innerhalb des Scripts) bleiben daher natürlich vorhanden.

Die im Beispiel genannten Variablen kannst (und solltest) du nach deinen Bedürfnissen anpassen. Das Script crawlt alle Verzeichnisse nach der gewünschten Dateiendung bis auf die benannten Ausnahmen.

 

Beispiel:

<?
/*************************************************************
  Simple site crawler to create a search engine XML sitemap
 Version 0.2
 Free to use, without any warranty
 Written by Elmar Hanlhofer http://www.plop.at 01/Feb/2012
  ChangeLog:
 ----------
 Version 0.2 2013-01-16  
      * curl support - by Emanuel Ulses
     * write url, then scan url - by Elmar Hanlhofer
 *************************************************************/
     $file = "sitemap.xml";        // output file
    $url = "http://www.plop.at";    // url to scan
     // ignore urls starting with
    $skip[0] = "http://www.plop.at/print"; 
    $skip[1] = "http://www.plop.at/slide";
    
    $extension = ".html";        // scan files with extension
     $freq = "daily";            // scan frequency
    $priority = "0.5";            // site priority
    
 function Path ($p)
{
    $a = explode ("/", $p);
    $len = strlen ($a[count ($a) - 1]);
    return (substr ($p, 0, strlen ($p) - $len));
}
 function GetUrl($url)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}
 
function Scan($url)
{
    global $scanned, $pf, $extension, $skip, $freq, $priority;
    
    echo "scan url $url\n";
     array_push ($scanned, $url);
    $html = GetUrl ($url);
    $a1 = explode ("<a", $html);
     foreach ($a1 as $key => $val)
    {
    $parts = explode (">", $val);
    $a = $parts[0];
    
    $aparts = explode ("href=", $a);
     $hrefparts = explode (" ", $aparts[1]);
    $hrefparts2 = explode ("#", $hrefparts[0]);
     $href = str_replace ("\"", "", $hrefparts2[0]);
    
    if ((substr ($href, 0, 7) != "http://") && 
       (substr ($href, 0, 8) != "https://") &&
       (substr ($href, 0, 6) != "ftp://"))
    {
        if ($href[0] == '/')
        $href = "$scanned[0]$href";
        else
        $href = Path ($url) . $href;
    }
    
    if (substr ($href, 0, strlen ($scanned[0])) == $scanned[0])
    {
        $ignore = false;
        if (isset ($skip))
        foreach ($skip as $k => $v)
            if (substr ($href, 0, strlen ($v)) == $v)
            $ignore = true;
        
        if ((!$ignore) &&
        (!in_array ($href, $scanned)) && 
        (strpos ($href, $extension) > 0)        
        )
        {
        fwrite ($pf, "<url>\n  <loc>$href</loc>\n" .
                 "  <changefreq>$freq</changefreq>\n" .
                 "  <priority>$priority</priority>\n</url>\n");
        echo $href. "\n";
        Scan ($href);
        }
    }
    }
}
                         
 
    $pf = fopen ($file, "w");
    if (!$pf)
    {
    echo "cannot create $file\n";
    return;
    }
     fwrite ($pf,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<urlset
      xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"
      xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
      xsi:schemaLocation=\"http://www.sitemaps.org/schemas/sitemap/0.9
            http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd\">
<!-- created with Plop PHP XML Sitemap Generator 0.2 www.plop.at -->
 <url>
  <loc>$url/</loc>
  <changefreq>daily</changefreq>
</url>
");
     $scanned = array();
    Scan ($url);
    
    fwrite ($pf, "</urlset>\n");
    fclose ($pf);
?>

 

Fazit

Eine Sitemap hilft den Suchmaschinen wie Google, die Inhalte auf deiner Website zu finden. Mit der Sitemap gibst du z.B. Google die Struktur deiner Website vor und zeigst dem Crawler, wo die Inhalte zu finden sind. Es ist daher sehr wichtig, eine Sitemap zu erstellen.

Weitere Tipps zur SEO findest du bspw. im Artikel 17 Tipps für eine erfolgreiche Suchmaschinenoptimierung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.