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, 16062 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
Microsoft
Shadow Defender
Tipp von Hyrule vor 11 StundenMicrosoft

Ich denke viele kennen es: Ein Update oder ein neues Programm und vieles funktioniert nicht mehr wie gewünscht. Die ...

Microsoft
Microsoft verarztet 50 Sicherheitslücken
Tipp von Hyrule vor 4 TagenMicrosoft

Microsoft verarztet mal wieder ein "paar" Sicherheitslücken in ihren Produkten: Und mal wieder Remote Code Execution und der abartige ...

Sicherheit

Prüfskript gegen Spectre und Co. wurde erweitert

Tipp von DerWoWusste vor 5 TagenSicherheit

Moin. Get-SpeculationControlSettings sagt sicherlich den meisten etwas. Mit den neuen Spectrevarianten muss man nun weitere Schritte machen, um zu ...

LAN, WAN, Wireless

IPhone und iPad scheinen Verbindungsprobleme mit Unifi v5.7.23 und 802.11r (schnelles Roaming) zu haben

Erfahrungsbericht von StefanKittel vor 8 TagenLAN, WAN, Wireless4 Kommentare

Hallo, vielleicht hilft dieser recht kurze Bericht doch den Einen oder Anderen. Ausgangspunkt Ein Kunde von mir setzt einen ...

Heiß diskutierte Inhalte
Hyper-V
Hyper V startet nicht wenn eine Offline geschaltene HD integriert wird
Frage von DieAzubinneHyper-V11 Kommentare

Hallö, bei einem PC der mit Windows 10 Pro installiert ist habe ich das Problem, dass der Virtuelle PC ...

CPU, RAM, Mainboards
ASUS P5W DELUXE startet nur manchmal und nur mit 2 GraKas
Frage von Windows10GegnerCPU, RAM, Mainboards11 Kommentare

Hallo, ich habe das o.g. Motherboard erhalten. Egal ob C2D 8400, Pentium D 945 oder P4 670, das teil ...

Virtualisierung
Virtuelle Maschinen langsam unabhängig vom Hypervisor
gelöst Frage von HyruleVirtualisierung9 Kommentare

Hallo, ich möchte gerne zwei bis drei virtuelle Maschinen virtualisieren, darauf sollen jeweils Windows 10 und diverse etwas größere ...

Rechtliche Fragen
Vorlage "private Nutzung dienstlicher Mobiltelefone"
Frage von linos2Rechtliche Fragen8 Kommentare

Hallo zusammen, ich bin auf der Suche nach einer Vorlage für die private Nutzung von dienstlichen Mobiltelefonen. Unsere Firma ...