Sitemap Google

Facile, il n’y a qu’à installer l’extension  dd_googlesitemap.

Vous pouvez maintenant enregistrer la page correspondant à  http://www.domain.tld/?eID=dd_googlesitemap dans la partie Google Webmaster Tools.

Pour éviter de devoir enregistrer votre sitemap, vous pouvez créer un fichier robots.txt à la racine avec le contenu suivant :

Sitemap:  http://www.domain.tld/?eID=dd_googlesitemap

Site multilingue

Vous avez un site multilingue ? Alors il faudra enregistrer autant de sitemaps qu’il y a de langues configurées pour votre site. Les URLs sont :

Si comme moi vous trouvez que ça demande trop de travail d’enregistrer toutes ces entrées, vous pouvez créer un fichier sitemap qui contient toutes les langues à l’aide du script suivant (sitemap.php) enregistré à la racine de votre installation TYPO3. Votre fichier sitemap complet sera donc désormais accessible à l’URL  http://www.domain.tld/sitemap.php.

Remarques : Ce script part du principe que toutes les URLs sont générées avec la langue, y compris pour la langue par défaut (si la langue par défaut est le français, « fr », alors toutes les URL sont préfixées par « /fr/ ») [1]. Pensez à mettre à jour la liste des langues selon votre configuration et à mettre à jour le fichier robots.txt si vous l’avez configuré ;-)

<?php
$languages = array(
	'default' => '0',
	'de' => '1',
	'fr' => '2',
	'it' => '3',
	'en' => '4',
);
 
$url = 'http:'.'//' . $_SERVER['HTTP_HOST'] . '/?eID=dd_googlesitemap&L=';
 
header('Content-type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8"?>' . chr(10) .
	'<urlset xmlns="http'.'://www.sitemaps.org/schemas/sitemap/0.9">' . chr(10);
 
$defaultLanguage = '';
$l = 0;
 
foreach ($languages as $language => $uid) {
	if ($language == $defaultLanguage) continue;
	$c = 0;
 
	$fh = fopen($url . $uid, 'r');
 
	while (!feof($fh)) {
		$buffer = fread($fh, 1024);
		if ($c == 0) {
				// Remove start tags
			$buffer = substr($buffer, strpos($buffer, '<url>'));
		}
		if ($l == 0) {
				// Extract the default language
			if (preg_match('|http://.*?/(..)|', $buffer, $matches)) {
				$defaultLanguage = $matches[1];
			}
		}
			// Remove end tag
		if (substr($buffer, -9) == '</urlset>') {
			$buffer = substr($buffer, 0, -9);
		}
		echo $buffer;
		$l++; $c++;
	}
	fclose($fh);
}
 
echo '</urlset>';
?>
Flattr