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, 15756 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
Exchange Server

WSUS bietet CU22 für Exchange 2007 SP3 nicht an. EOL Exchange 2007

Tipp von DerWoWusste zum Thema Exchange Server ...

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

Frage von tobmes zum Thema PHP ...

Outlook & Mail
gelöst Sync zwischen Outlook und Google (kalender und adressen) Freeware? (4)

Frage von RScorpion zum Thema Outlook & Mail ...

PHP
PHP PDO Problem (1)

Frage von Tiggr1994 zum Thema PHP ...

Heiß diskutierte Inhalte
Batch & Shell
gelöst Batch xls nach aktuellem Datum auslesen und email senden (14)

Frage von michi-ffm zum Thema Batch & Shell ...

Windows Server
SBS 2011 Standard virtualisieren (13)

Frage von HeinrichM zum Thema Windows Server ...

Backup
Datensicherung ARCHIV (12)

Frage von fautec56 zum Thema Backup ...

LAN, WAN, Wireless
Per Script auf UniFi-controller zugreifen und WPA2-Key ändern (11)

Frage von Winfried-HH zum Thema LAN, WAN, Wireless ...