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, 15993 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
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 13 StundenWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 13 StundenSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 1 TagDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 1 TagSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
Exchange Server
Exchange Postfach Einbindung Betriebs-rat -Arzt, Bewerbung .
gelöst Frage von YellowcakeExchange Server23 Kommentare

Hey ich habe da mal eine Denksport Aufgabe bekommen Genutzt wird ein Exchange Server 2010. hier gibt es den ...

Windows Server
Downgrade von Windows Server 2016 auf 2012 - Wie vorgehen?
Frage von EstefaniaWindows Server13 Kommentare

Guten Ich habe eine Frage an Erfahrene unter euch. Durch einen InPlace Upgrade wurde Windows Server 2012 auf die ...

Datenschutz
Telematikinfrastruktur Erfahrungsaustausch
Frage von MOS6581Datenschutz12 Kommentare

Moin, unter meinen Kunden befinden sich auch einige Ärzte, welche sich künftig mit der Telematikinfrastruktur-Geschichte der Gematik herumärgern dürfen. ...

Windows Server
Delgegierte OU via RDP verwalten - Objektverwaltung zuweisen
gelöst Frage von TOAOICEWindows Server12 Kommentare

Hallo, ich habe folgendes Problem. Ich möchte in meiner Domäne (Server2016), einer Gruppe (OUAdmin) Berechtigungen auf die OU Test ...