Php
396
9
google sitemap
google à besoin d'aide ;)
https://www.google.com/webmasters/sitemaps/login (301 - Moved Permanently).
Pour les aider à visiter nos site de façon optimum, ils ont mis en place un systéme de "plan" de site au format XML que le webmaster peu alors placer sur son site.
L'objectif est pour google d'avoir un seul fichier à télécharger pour obtenir les adresses de toutes les pages, et les dates de mise à jour.
Quelques limites :
50000 par fichier (ou 10 Mo)
Pour la partie qui suit je vais me limiter à 50 000 pages donc un seul fichier (les sites plus gros ont toutes les compétences pour adapter se qui suit)
1
Créer une table qui recevra toutes les infos nécéssaires:
CREATE TABLE `sitemap` (
`id` int(11) NOT NULL auto_increment,
`url` varchar(100) NOT NULL default '',
`date` date NOT NULL default '0000-00-00',
`nb` int(11) NOT NULL default '0',
UNIQUE KEY `id` (`id`),
KEY `url` (`url`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
2
créer un petit fichier PHP qui servira à remplir cette table
[php]
$url_ = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
if(ereg(".php",$url_))$url_="none"; // ceci est une option si vous désirez ne pas indexer les fichiers php (pour utilisateurs urlwriting) vous pouvez ajouter d'autres filtres ici
if($url_<>"none")
{
mysql_query("update `sitemap` set nb=nb+1 where url='$url_';");
if(mysql_affected_rows()==0)
{
$date_=date("Y-m-d",time());
mysql_query("INSERT INTO `sitemap` ( `id` , `url` , `date` )
VALUES ('', '$url_', '$date_' ) ; ");
}
}
[/php]
vous l'aurez remarqué, on en profite pour compter le nombre de visites de la page.
3
Placer un include dans votre script php (index.php par exemple) de maniére à ne l'inclure QUE sir le visiteur n'est pas logué (google ne se connecte pas et n'accéde donc pas aux pages nécéssitant une connexion)
par exemple:
juste avant la déconnection de la base de données:
... voila, les visiteurs font maintenant le boulot à votre place, à chaque page visitée, la page est mise dans la base de données avec la date de "premiére vue".
4
Pour permettre la mise à jour de vos page il vous suffit de mettre au bon endroit un
[php]mysql_query("update `sitemap` set `date`=".date("Y-m-d",time())." where `url`='$paggemodifiée_';");[/php]
Chaque site ayant sa propre architecture, là il vous faudra bosser un peu ;).
5
Bien joli tout cela mais pour le moment vous 'navez rien d'autre qu'une liste de page dans votre base de données, nous allons donc créer le joli fichier XML.
[php]
// connectez vous avec votre include preféré
echo"
";
$liste= mysql_query("SELECT url,date FROM `sitemap` order by id limit 0,50000");
while(list($a,$b) = mysql_fetch_array($liste))
{
echo"
$a
$b
";
}
echo" ";
// déconnectez vous avec votre include preféré
[/php]
6
Votre fichier est créé.
Vous pouvez maintenant le sauver en sitemap.xml et suivre les inscructions de google.
Je conseil deux choses:
1 - prévoir les petits malins qui vont tenter de charger votre serveur et cacher le fichier n°5 avec un nom de votre choix et un .htaccess
2 - repasser ici, voir si j'ai améliorer l'histoire (je penses ajouter une possibilité de créer le fichier et de le compacter en gz) histoire d'automatiser la mise à jour.
Pour les aider à visiter nos site de façon optimum, ils ont mis en place un systéme de "plan" de site au format XML que le webmaster peu alors placer sur son site.
L'objectif est pour google d'avoir un seul fichier à télécharger pour obtenir les adresses de toutes les pages, et les dates de mise à jour.
Quelques limites :
50000 par fichier (ou 10 Mo)
Pour la partie qui suit je vais me limiter à 50 000 pages donc un seul fichier (les sites plus gros ont toutes les compétences pour adapter se qui suit)
1
Créer une table qui recevra toutes les infos nécéssaires:
CREATE TABLE `sitemap` (
`id` int(11) NOT NULL auto_increment,
`url` varchar(100) NOT NULL default '',
`date` date NOT NULL default '0000-00-00',
`nb` int(11) NOT NULL default '0',
UNIQUE KEY `id` (`id`),
KEY `url` (`url`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
2
créer un petit fichier PHP qui servira à remplir cette table
[php]
$url_ = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
if(ereg(".php",$url_))$url_="none"; // ceci est une option si vous désirez ne pas indexer les fichiers php (pour utilisateurs urlwriting) vous pouvez ajouter d'autres filtres ici
if($url_<>"none")
{
mysql_query("update `sitemap` set nb=nb+1 where url='$url_';");
if(mysql_affected_rows()==0)
{
$date_=date("Y-m-d",time());
mysql_query("INSERT INTO `sitemap` ( `id` , `url` , `date` )
VALUES ('', '$url_', '$date_' ) ; ");
}
}
[/php]
vous l'aurez remarqué, on en profite pour compter le nombre de visites de la page.
3
Placer un include dans votre script php (index.php par exemple) de maniére à ne l'inclure QUE sir le visiteur n'est pas logué (google ne se connecte pas et n'accéde donc pas aux pages nécéssitant une connexion)
par exemple:
juste avant la déconnection de la base de données:
if($ketespaslogue==1) include("../votrefichier.php");
... voila, les visiteurs font maintenant le boulot à votre place, à chaque page visitée, la page est mise dans la base de données avec la date de "premiére vue".
4
Pour permettre la mise à jour de vos page il vous suffit de mettre au bon endroit un
[php]mysql_query("update `sitemap` set `date`=".date("Y-m-d",time())." where `url`='$paggemodifiée_';");[/php]
Chaque site ayant sa propre architecture, là il vous faudra bosser un peu ;).
5
Bien joli tout cela mais pour le moment vous 'navez rien d'autre qu'une liste de page dans votre base de données, nous allons donc créer le joli fichier XML.
[php]
// connectez vous avec votre include preféré
echo"
<?php xml version=\"1.0\"encoding=\"UTF-8\" ?>
";
$liste= mysql_query("SELECT url,date FROM `sitemap` order by id limit 0,50000");
while(list($a,$b) = mysql_fetch_array($liste))
{
echo"
";
}
echo"
// déconnectez vous avec votre include preféré
[/php]
6
Votre fichier est créé.
Vous pouvez maintenant le sauver en sitemap.xml et suivre les inscructions de google.
Je conseil deux choses:
1 - prévoir les petits malins qui vont tenter de charger votre serveur et cacher le fichier n°5 avec un nom de votre choix et un .htaccess
2 - repasser ici, voir si j'ai améliorer l'histoire (je penses ajouter une possibilité de créer le fichier et de le compacter en gz) histoire d'automatiser la mise à jour.
2005-06-04 18:18:07