|
Cet article expose une méthode simple et automatique de génération dynamique de fichier sitemap.xml pour les sites hébergés sous Apache avec PHP et MySQL. Cette méthode utilise l'url rewriting d'Apache.
La méthode consiste à insérer sur chaque page d'un site un script PHP. Ce dernier aura pour but de vérifier l'existence de l'url de la page dans la bdd.
Un deuxième script sert à générer le sitemap en lui-même. Il se connecte en bdd et retourne les résultats au format sitemap xml.
Certaines configurations d'apache ne permettent pas l'interprétation du php dans les fichiers xml, il faut utiliser une règle d'url-rewriting pour que le script php soit exécuté lors de la demande du fichier sitemap.
Table en base de données MySQL
Nom: Sitemapurls
Colonne - [Type] - Additionnal options
Id - [INT] - PRIMARY auto-increment
Url - [VARCHAR(255)]
Script d'insertion d'url en base de données MySQL
<?php $cnx = mysql_connect($host,$user,$pass); mysql_select_db($db); $sql = "SELECT COUNT(*) FROM sitemapurls WHERE Url='".$_SERVER['REQUEST_URI']."'"; $res = mysql_query($sql, $cnx) or die("MySQL query error"); if(mysql_num_rows($res)==0) { $sql = "INSERT INTO Sitemapurls (Url) VALUES('".$_SERVER['REQUEST_URI']."')"; mysql_query($sql, $cnx) or die("MySQL query error"); } ?>
Script sitemap.php de generation de sitemap
<?php $cnx = mysql_connect($host,$user,$pass); mysql_select_db($db); $sql = "SELECT Url FROM sitemapurls" $res = mysql_query($sql, $cnx) or die("MySQL query error");
header("Content-Type: text/xml"); echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.google.com/schemas/sitemap/0.84\">\n";
$nbrresult=mysql_num_rows($res); if($nbrresult>0) { while ($row = mysql_fetch_row($res)) { echo "<url><loc>".$row[0]."</loc><changefreq>always</changefreq><priority>0.8</priority></url>\n"; } } echo "</urlset>"; ?>
La règle d'url-rewriting dans le .htaccess
Options +FollowSymlinks
RewriteEngine On
RewriteRule ^sitemap\.xml sitemap.php [L]
Dernières recommandations
La règle d'url-rewriting doit être placée dans le fichier .htaccess à la racine du site.
Le script sitemap.php doit lui aussi être placé à la racine du site.
|