Top-Themen

Aktuelle Themen (A bis Z)

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)

Mitglied: Frank

Frank (Level 5) - Jetzt verbinden

06.11.2008, aktualisiert 27.04.2011, 16133 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 ..
Ähnliche Inhalte
Informationsdienste

Google-Pop-Up "Hinweise zum Datenschutz bei Google" - Wie vermeide ich die Zustimmung, wenn keine Ablehnung möglich ist?

Erfahrungsbericht von HenryDeerInformationsdienste13 Kommentare

Hallo alle miteinander, sicherlich bin ich nicht der einzige, dem Google ein Pop-Up mit dem Titel "Hinweise zum Datenschutz ...

Informationsdienste

Alphabet, der neue Mutterkonzern von Google

Information von FrankInformationsdienste5 Kommentare

Umstrukturierung: In Zukunft wird Google unter dem neuen Mutterkonzern Alphabet geführt. Die neue Holding "Alphabet" wird von den Google-Gründern ...

Webbrowser

DOM-Storage im IE zwingend für Anzeige von Microsoft KB-Artikeln

Tipp von kgbornWebbrowser3 Kommentare

Ich stelle die Information hier mal für Admins in Firmen ein, da diese euch möglicherweise tangiert. Vermutlich wird der ...

SEO

Google: HTTPS-Seiten für ein besseres Ranking

Tipp von FrankSEO2 Kommentare

Google gibt Seiten mit HTTPS-URLs (und einem gültigen Zertifikat) in Zukunft eine deutliche höhere Priorität bei den Suchergebnissen. Dafür ...

Neue Wissensbeiträge
E-Mail
Email-Apps und Verhalten bei Pop3
Erfahrungsbericht von kfranzk vor 1 TagE-Mail10 Kommentare

Hallo Freunde, da mir mein diesbezüglicher Faden als gelöst markiert wurde, muss ich hier neu aufsetzen. Ich arbeite bewusst ...

Hyper-V

Optimiertes Ubuntu per Microsoft Hyper-V-Schnellerstellung verfügbar

Anleitung von Frank vor 1 TagHyper-V

Für Microsofts Virtualisierungssoftware Hyper-V ist ab sofort auch ein optimiertes Ubuntu 18.04.1 LTS verfügbar. In der "Hyper-V-Schnellerstellung" App, die ...

Sicherheits-Tools

Trend Micro WorryFree Business Security (WFBS) 10 - neuer Patch 1470 verfügbar

Tipp von VGem-e vor 2 TagenSicherheits-Tools1 Kommentar

Servus, mal sehen, ob mit Patch 1470, zu finden unter dann die angeblich fehlerhafte Funktion, die unter W10 im ...

Server-Hardware

Lösung für Ersatz eines defekter Raid-Controllers

Anleitung von wellknown vor 2 TagenServer-Hardware4 Kommentare

Hallo, da ich nichts gefunden habe und selbst eine Lösung brauchte, hier eine kleine Anleitung für alle die vor ...

Heiß diskutierte Inhalte
Exchange Server
Outlook for Android - Kann nicht eingerichtet werden mit Exchange
Frage von HeuristikerExchange Server11 Kommentare

Servus Leute, momentan bin ich auf der Suche nach einem E-Mail-Client inklusive Kalender für Android mit demselben Look-And-Feel. Wir ...

Windows 10
Wireshark nur Inbound Traffic aufzeichnen
gelöst Frage von MikePostWindows 1010 Kommentare

Hallo Wie kann ich meinen Windows 10 Laptop konfigurieren, dass ich im Wireshark Capture nur inkoming Traffic sehe und ...

Batch & Shell
Bestimmte Textpassagen via bat löschen
gelöst Frage von Grisu84Batch & Shell10 Kommentare

Hallo, ich habe eine txt-Datei, in welcher ich durch eine bat bestimmte Zeilen löschen möchte. So soll die Datei ...

E-Mail
Email-Apps und Verhalten bei Pop3
Erfahrungsbericht von kfranzkE-Mail10 Kommentare

Hallo Freunde, da mir mein diesbezüglicher Faden als gelöst markiert wurde, muss ich hier neu aufsetzen. Ich arbeite bewusst ...