Sitemap

Mammouth du PHP | 643 Messages

12 oct. 2015, 18:23

Bonjour à tous.
Je m'adresse à vous car je suis en pleine optimisation de site et j'arrive à la phase du sitemap.
J'aimerais avoir vos retour dessus.
Faut il passer par un générateur de sitemap ?
Tout faire soit même ( environ 30.000 Pages )...

Merci à vous par avance ;)

Mammouth du PHP | 2703 Messages

12 oct. 2015, 18:25

si tu as su faire un site dynamique, tu sauras faire un sitemap, qui n'est qu'une liste des urls du site.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

12 oct. 2015, 18:31

Les générateurs de sitemap gratuits sont généralement limités à un certain nombre d'url (de 30 à 100 en moyenne). Et il n'est effectivement pas bien compliqué en php de réaliser un générateur pour produire dynamiquement un plan du site et/ou le sitemap associé (certains trouverons même l'exercice amusant ... sont pas nets ces développeurs ;))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 643 Messages

12 oct. 2015, 18:56

Re.
Bon bah du coup j'ai fait un truc très simple avec un while pour parcourir mes entrées du genre:
Juste j'aimerais affiches les balise <url> et <loc> mais du coup tel quel ça ne marche pas ....
PS: Auriez vous fait comme ça ?
merci encore
<?php
	$pub = "SELECT * FROM `mabase`";
    $req = $bdd->query($pub);
	if($req->rowCount() > 0) {
			
		while($ligne = $req->fetch(PDO::FETCH_ASSOC)){ 
		
		echo ' 
				<url><br>
  					 <loc><br>
					  http://monsite.fr/annonce?id='.$ligne['id'].'</loc><br>
					  <changefreq>weekly</changefreq><br>
					  <priority>0.9</priority><br>
					 </url><br>

				</li>
    		'."\n";

		}  
		
	} else {
		echo 'Aucune annonce enregistrée ';
	}  
	?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

13 oct. 2015, 09:18

Bonjour,

Attention, le sitemap n'est pas une page html à destination d'un utilisateur qui la consultera via le navigateur, mais un fichier xml qui est exclusivement destiné aux moteurs de recherche. Il doit donc être constitué comme un fichier xml et respecter la structure attendu pour les fichiers sitemap :
- Pas de balises <br> ou <li> destinées à l'affichage sur le navigateur, les retours à la ligne éventuels se font avec "\n"
- Ton fichier doit impérativement contenir la ligne <?xml version="1.0" encoding="UTF-8"?>
- Tes balises url doivent se trouver à l'intérieur d'une balise <urlset>

En fonction de la fréquence à laquelle des pages sont ajoutées/retirées sur ton site, il peut être préférable de générer un fichier physique sur le serveur de façon régulière plutôt que de générer un flux de façon dynamique à chaque appel du script.
<?php
  $pub = "SELECT id FROM `mabase`"; // pas besoin de faire un SELECT * si tu as juste besoin de l'id :)
  $req = $bdd->query($pub);

  $xml = '<?xml version="1.0" encoding="UTF-8"?>';
  $xml.= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';

  while ($ligne = $req->fetch(PDO::FETCH_ASSOC)) {
    $xml.= '<url>' . "\n";
    $xml.= '   <loc>http:// ... /annonce?id=' . $ligne['id'] . '</loc>' . "\n";
    $xml.= '   <changefreq>weekly</changefreq>' . "\n";
    $xml.= '   <priority>0.9</priority>' . "\n";
    $xml.= '</url>' . "\n";
  }  
  $xml.= '</urlset>';

  echo $xml; // tu peux aussi utiliser cette variable pour coller le contenu dans un fichier au lieu de l'afficher

?>
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...