Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Google Sitemap mit PHP und DOM erstellen (Document Object Model)

Anleitung Entwicklung PHP

Mitglied: Frank

Frank (Level 5) - Jetzt verbinden

06.11.2008, aktualisiert 27.04.2011, 15717 Aufrufe, 4 Kommentare, 2 Danke

Hier ein kleine Vorlage für alle Entwickler, die eine Google-Sitemap mit Hilfe von PHP selbst erstellen wollen. Bei der Google-Suche hatte ich leider nichts zu diesem Thema gefunden.

Um eine eigene Google-Sitemap mit Hilfe von PHP für administrator.de zu erstellen, habe mich für die DOM Schnittstelle (Document Object Model) entschieden. Da wir mehr als 50.000 Beiträge haben, muss ich eine Sitemap-Index Datei erstellen und die Inhalte auf mehrere Sitemap Dateien aufteilen. Infos und Hilfen zum Sitemap-Protokoll findet Ihr hier. Die Werte sind natürlich nur Beispielswerte, die muss jeder selbst anhand seiner Programmierung und Datenbank ausfüllen. Es geht nur um die reine XML Struktur per DOM und nicht um die Inhalte. Tipp: Das Entity-Escaping macht die DOM-Schnittstelle automatisch, man muss seine URLs also nicht extra mit "htmlspecialchars" umwandeln.

Hier die Sitemap-Index Datei:
01.
// ------------- 
02.
// SITEMAP INDEX 
03.
// ------------- 
04.
 
05.
$dom = new DOMDocument('1.0','UTF-8'); 
06.
$dom->formatOutput = true; 
07.
 
08.
$xml = $dom->appendChild($dom->createElement('sitemapindex')); 
09.
$xml_attr = $xml->setAttribute("xmlns","http://www.sitemaps.org/schemas/sitemap/0.9"); 
10.
$sitemap = $xml->appendChild($dom->createElement('sitemap')); 
11.
 
12.
$loc = $sitemap->appendChild($dom->createElement('loc')); 
13.
$loc->appendChild($dom->createTextNode("http://www.example.com/sitemap1.xml.gz")); 
14.
$lastmod = $sitemap->appendChild($dom->createElement('lastmod'));       
15.
$lastmod->appendChild($dom->createTextNode(date(DATE_W3C))); 
16.
 
17.
// SAVE        
18.
if ($dom->save("/htdocs/sitemap-index.xml")) { 
19.
	echo "Sitemap-Index erfolgreich gespeichert\n"
20.
} else
21.
	echo "Fehler beim Speichern des Sitemap-Index!\n"
22.
	exit
23.
}
Hier die Sitemap Datei:
01.
// ------- 
02.
// SITEMAP 
03.
// ------- 
04.
 
05.
$dom = new DOMDocument('1.0','UTF-8'); 
06.
$dom->formatOutput = true; 
07.
 
08.
$xml = $dom->appendChild($dom->createElement('urlset')); 
09.
$xml_attr = $xml->setAttribute("xmlns","http://www.sitemaps.org/schemas/sitemap/0.9"); 
10.
 
11.
// BEISPIEL ERSTE URL (dass muss später dann in eine Schleife) 
12.
$url = $xml->appendChild($dom->createElement('url')); 
13.
$loc = $url->appendChild($dom->createElement('loc')); 
14.
$loc->appendChild($dom->createTextNode("http://www.example.com/index.php?mod=help&idx=1")); 
15.
// OPTIONAL 
16.
$lastmod = $url->appendChild($dom->createElement('lastmod'));       
17.
$lastmod->appendChild($dom->createTextNode(date(DATE_W3C))); 
18.
$changefreq = $url->appendChild($dom->createElement('changefreq'));       
19.
$changefreq->appendChild($dom->createTextNode("daily")); 
20.
$priority = $url->appendChild($dom->createElement('priority'));       
21.
$priority->appendChild($dom->createTextNode("0.8")); 
22.
 
23.
// BEISPIEL ZWEITE URL ETC..  
24.
$url = $xml->appendChild($dom->createElement('url')); 
25.
$loc = $url->appendChild($dom->createElement('loc')); 
26.
$loc->appendChild($dom->createTextNode("http://www.example.com/index.php?mod=help&idx=2")); 
27.
$lastmod = $url->appendChild($dom->createElement('lastmod'));       
28.
$lastmod->appendChild($dom->createTextNode(date(DATE_W3C))); 
29.
$changefreq = $url->appendChild($dom->createElement('changefreq'));       
30.
$changefreq->appendChild($dom->createTextNode("daily")); 
31.
$priority = $url->appendChild($dom->createElement('priority'));       
32.
$priority->appendChild($dom->createTextNode("0.8")); 
33.
 
34.
// SAVE        
35.
if ($dom->save("/htdocs/sitemap.xml")) { 
36.
	echo "Sitemap erfolgreich gespeichert\n"
37.
} else
38.
	echo "Fehler beim Speichern der Sitemap!\n"
39.
	exit
40.
}
Ergebnis "sitemap-index.xml":
<?xml version="1.0" encoding="UTF-8"?> 
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
  <sitemap> 
    <loc>http://www.example.com/sitemap1.xml.gz</loc> 
    <lastmod>2008-11-06T12:39:03+01:00</lastmod> 
  </sitemap> 
</sitemapindex>
Ergebnis "sitemap.xml":
<?xml version="1.0" encoding="UTF-8"?> 
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
  <url> 
    <loc>http://www.example.com/index.php?mod=help&amp;idx=1</loc> 
    <lastmod>2008-11-06T12:39:03+01:00</lastmod> 
    <changefreq>daily</changefreq> 
    <priority>0.8</priority> 
  </url> 
  <url> 
    <loc>http://www.example.com/index.php?mod=help&amp;idx=2</loc> 
    <lastmod>2008-11-06T12:39:03+01:00</lastmod> 
    <changefreq>daily</changefreq> 
    <priority>0.8</priority> 
  </url> 
</urlset>
Weitere Informationen über Google-Sitemaps und genaue Feldbeschreibungen findet Ihr unter:
http://www.sitemaps.org/de/protocol.php
https://www.google.com/webmasters/tools/docs/de/protocol.html

Google-Sitemaps validieren bzw. überprüfen:
http://www.validome.org/google/lang/ge

Viel Spaß noch
Gruß
Frank
Mitglied: masterG
15.11.2008 um 11:20 Uhr
Auf die Lösung bin ich bis jetzt nicht gekommen. Danke für das Tut.

Gruß
masterG
Bitte warten ..
Mitglied: comvation
11.12.2008 um 09:43 Uhr
Wir haben diesen Bericht zum Anlass genommen, in unserer Open Source CMS Software Contrexx eine Sitemaps-XML Datei automatisch zu generieren. Ab der aktuellen Download Version ist dies nun enthalten.

Weitere Informationen unter http://www.contrexx.com/de/
Bitte warten ..
Mitglied: pcguy
25.04.2011 um 12:03 Uhr
Hallo Frank

Danke für die Anleitung!
Eine Frage noch, welcher Wert muss in der Konstante "_SITE_PATH." sein ?
Ich habe es schon mit einigen versuch, zb _SERVER["SCRIPT_URL"] ...

Sorry, ich bin noch PHP Anfänger
Bitte warten ..
Mitglied: Frank
27.04.2011 um 15:28 Uhr
Hallo "pcguy",

die Konstante "_SITE_PATH." brauchst Du nicht zu beachten. Die wird nur bei uns intern verwendet. Ich habe sie oben im Code jetzt rausgeschmissen, damit sie nicht weiter verwirrt.

Das ganze sie dann so aus:
01.
// SAVE         
02.
if ($dom->save("/htdocs/sitemap.xml")) {  
03.
    echo "Sitemap erfolgreich gespeichert\n";  
04.
} else {  
05.
    echo "Fehler beim Speichern der Sitemap!\n";  
06.
    exit;  
07.
}
Gruß
Frank
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
PHP
LaTeX Dokument mit PHP erstellen (6)

Frage von tobmes zum Thema PHP ...

PHP
PHP und Google Cloud Messaging (1)

Frage von tomolpi zum Thema PHP ...

Webbrowser
Google stopft 36 Löcher in Chrome 55

Link von runasservice zum Thema Webbrowser ...

Heiß diskutierte Inhalte
DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (9)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...