Simple Google Sitemap Generator


Einfacher Google Sitemap Generator für die Website

Der Sitemap Generator erstellt entweder lokal oder im Internet eine Google-konforme Sitemap.

Dabei wird das Verzeichnis, in welchem sich das PHP-Script befindet, eingelesen und entsprechend der Einstellung alle ".php"- oder ".html"-Dateien in einer "sitemap.xml"-Datei gelistet. Diese Datei entspricht den Anforderungen von Google.

Die wichtigsten Einstellungen sind:

  1. define ("SITE", "http://deltaos.de");
  2. define ("EXT", "php");

Mit der ersten Einstellung wird die URL, also die Web-Adresse festgelegt und mit der zweiten wir der Dateityp festgelegt, der eingelesen werden soll. Wer PHP ab der Version 7 benutzt muss außerdem zwingend die Zeitzone setzen. Falls das noch nicht global über die PHP-Einstellungen geschehen ist, wir sie in dem Script gesetzt.

<?php
/**
 * Created by GEMA-SOFT AP.
 * User: Gert Massheimer
 * Date: 09.Dec.2018
 * Time: 15:19
 * File: web-sitemap.php
 */
 
// Set the output file name.
define ("OUTPUT_FILE", "sitemap.xml");
 
// Set the start URL. Example: define ("SITE", "https://www.example.com");
define ("SITE", "https://deltaos.de");
 
// General information for search engines how often they should crawl the page.
# define ("FREQUENCY", "weekly");
define ("FREQUENCY", "monthly");
 
// General information for search engines. You have to modify the code to set
// various priority values for different pages. Currently, the default behavior
// is that all pages have the same priority.
define ("PRIORITY", "0.5");
 
// Define the file-extension we are looking for
define ("EXT", "php");
 
// Timezone settings
# if (ini_get('date.timezone') !== 'America/New_York') date_default_timezone_set('America/New_York');
if (ini_get('date.timezone') !== 'Europe/Berlin') date_default_timezone_set('Europe/Berlin');
 
# -----------------------------------------------------------------------------
 
$pf = fopen (OUTPUT_FILE, "w");
if (!$pf) {
  echo "<!doctype html><html lang='en'><head><title>Sitemap Generator</title></head><body><p>ERROR: Cannot create " . OUTPUT_FILE . "!</p></body></html>\n";
  return;
}
 
fwrite ($pf, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" .
  "<!-- Created GEMA-SOFT-AP PHP XML Sitemap Generator https://deltaos.de -->\n" .
  "<!-- Date: " . date ("Y-m-d H:i:s") . " -->\n" .
  "<urlset xmlns=\"https://www.sitemaps.org/schemas/sitemap/0.9\">\n" .
  "  <url>\n" .
  "    <loc>" . SITE . "/</loc>\n" .
  "    <changefreq>" . FREQUENCY . "</changefreq>\n" .
  "  </url>\n");
 
foreach (preg_ls(__FILE__, false, "/.*\." . EXT . "/i") as $file) {
  if ($file === __FILE__) continue; // making sure, I'm not listing myself ;)
 
  fwrite ($pf, "  <url>\n" .
    "    <loc>" . SITE . "/" . htmlentities(basename($file)) ."</loc>\n" .
    "    <changefreq>" . FREQUENCY . "</changefreq>\n" .
    "    <priority>" . PRIORITY . "</priority>\n" .
    "  </url>\n");
}
 
fwrite ($pf, "</urlset>\n");
fclose ($pf);
 
echo "<!doctype html><html lang='en'><head><title>Sitemap Generator</title></head><body><p>&nbsp;&nbsp;&nbsp;...finished.</p><p>&nbsp;&nbsp;&nbsp;\"".OUTPUT_FILE."\" created.</p><p>&nbsp;&nbsp;&nbsp;Please check the file's content!</p></body></html>\n";
 
/**
 * preg_ls (recursive directory search) for php.
 * Lists all files with given pattern into an array
 *
 * @param string $path
 * @param bool $rec
 * @param string $pat
 * @return array
 */
function preg_ls ($path=".", $rec = false, $pat = "/.*/") {
  $pat = preg_replace("|(/.*/[^S]*)|s", "\1S", $pat);
  while (substr($path, -1, 1) == "/") $path = substr($path, 0, -1);
  if (!is_dir($path)) $path = dirname($path);
  if ($rec !== true) $rec = false;
  $d = dir($path);
  $ret = Array();
  while (false !== ($e = $d->read())) {
    if (($e == ".") || ($e == "..")) continue;
    if ($rec && is_dir($path."/".$e)) {
      $ret = array_merge($ret, preg_ls($path."/".$e, $rec, $pat));
      continue;
    }
    if (!preg_match($pat, $e)) continue;
    $ret[] = $path."/".$e;
  }
  return $ret;
}