Page 1 sur 1

problème sitemap et google

Posté : 03 avr. 2016, 00:36
par blinz
Salut à tous.
J'ai un script qui permet de créer mon site map mais après l'analyse et la soumission sur search console,
google me dit erreur:
Votre sitemap semble correspondre à une page HTML. Veuillez utiliser un format de sitemap pris en charge

PS: mon fichier est bien enregistré en sitemap_ville.xml

et la déclaration en robot.txt est:
User-Agent: *
Allow: /
Sitemap: http://monsite.fr/sitemap_ville_2.xml
Sitemap: http://monsite.fr/sitemap_departement.xml

Qu'est ce que je ne fait pas bien svp.
Merci à vous
<?php
	
  set_time_limit(0);

  $sitemap = "SELECT DISTINCT city FROM `type`";
  $req = $bdd->query($sitemap);

  $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";
	// toutes les villes avec les diff
    $xml.= '   <loc>http://monsite.fr/actu-de-'.simplification($ligne['city']).'.html</loc>' . "\n";
    $xml.= '   <changefreq>daily</changefreq>' . "\n";
    $xml.= '   <priority>0.9</priority>' . "\n";
    $xml.= '</url>' . "\n";
  }  
  $xml.= '</urlset>';

  echo $xml;

?>
Le code renvoi donc
<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
<url>
   <loc>http://monsite.fr/actu-de-mornac.html</loc>
   <changefreq>daily</changefreq>
   <priority>0.9</priority>
</url>
<url>
   <loc>http://monsite.fr/actu-de-pennautier.html</loc>
   <changefreq>daily</changefreq>
   <priority>0.9</priority>
</url>
</urlset>

Re: problème sitemap et google

Posté : 11 avr. 2016, 20:50
par Genova
Il te manque les headers pour dire que le contenu que tu envoies est en XML, ajoute le code suivant avant ton echo :

Code : Tout sélectionner

header('content-type: text/xml');

Re: problème sitemap et google

Posté : 11 avr. 2016, 23:11
par blinz
Donc en mettant ce que vous m'avez dit j'ai ceci:

Erreur d'analyse XML : instruction de traitement XML ou texte pas au début d'une entité externe
Emplacement : http://lasortie.fr/gen_sitemap.php
Numéro de ligne 6, Colonne 1 :<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url>
^

Le code:
<?php
  
  set_time_limit(0);

  $sitemap = "SELECT DISTINCT city FROM `loisirs`";
  $req = $bdd->query($sitemap);

  header('content-type: text/xml');
  $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";
  // toutes les villes avec les diff
    $xml.= '   <loc>http://monsite.fr/actu-de-'.simplification($ligne['city']).'.html</loc>' . "\n";
    $xml.= '   <changefreq>daily</changefreq>' . "\n";
    $xml.= '   <priority>0.9</priority>' . "\n";
    $xml.= '</url>' . "\n";
  }  
  $xml.= '</urlset>';

  echo $xml;

?>

Re: problème sitemap et google

Posté : 11 avr. 2016, 23:17
par or 1
numéro de ligne 6 indique que ce qui doit être à la première ligne ne l'est pas. il faudrait tester d'enlever les retours à la ligne du code php.

Re: problème sitemap et google

Posté : 11 avr. 2016, 23:47
par Genova
Il faut effectivement enlever le blanc qui est avant.

Re: problème sitemap et google

Posté : 12 avr. 2016, 07:23
par blinz
Donc voilà mon script et mon problème du coup :/
<?php
  
  set_time_limit(0);

  $sitemap = "SELECT DISTINCT city FROM `type`";
  $req = $bdd->query($sitemap);

  header('content-type:text/xml') . "\n";
  $xml.= '<?xml version="1.0" encoding="UTF-8"?>'."\n";
  $xml.= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';

  while ($ligne = $req->fetch(PDO::FETCH_ASSOC)) {
    $xml.= '<url>'."\n";
  // toutes les villes avec les diff
    $xml.= '   <loc>http://monsite.fr/actu-de-'.simplification($ligne['city']).'.html</loc>';
    $xml.= '   <changefreq>daily</changefreq>';
    $xml.= '   <priority>0.9</priority>';
    $xml.= '</url>'."\n";
  }  
  $xml.= '</urlset>';

  echo $xml;
Et le message d'erreur:
Image
[/img]

Par contre si j'enléve $xml.= '<?xml version="1.0" encoding="UTF-8"?>'."\n";
Il n y a plus de message d'erreur, mais mon code xml sera t'il bon ? validé ? car ca ressembla à ca:
<urlset>
<url>
<loc>http://monsite.fr/actu-de-mornac.html</loc>
<changefreq>daily</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>http://monsite.fr/actu-de-pennautier.html</loc>
<changefreq>daily</changefreq>
<priority>0.9</priority>
</url>
.....
Merci encore

Re: problème sitemap et google

Posté : 12 avr. 2016, 08:11
par Spols
Je pense que ton XML est faux car il contient des messages d'erreur de php.
Vérifie le code source généré pour repèré d'éventuelle erreur.

Mais je pense que
header('content-type:text/xml') . "\n";
après un header, il ne faut rien mettre d'autre que le point-virgule. Ce n'est pas une instruction du type echo.
$xml.= '<?xml version="1.0" encoding="UTF-8"?>'."\n";
comme c'est ta première occurence de $xml, il ne faut pas utiliser l'opérateur de concaténation .= mais un simple =
Sinon ton code risque de générer une Notice qui gênera ton code XML.

Re: problème sitemap et google

Posté : 12 avr. 2016, 21:36
par blinz
Re,
Par contre toujours le messeage d'erreur:

Erreur d'analyse XML : instruction de traitement XML ou texte pas au début d'une entité externe
Emplacement : http://lasortie.fr/gen_sitemap.php
Numéro de ligne 6, Colonne 1 :<?xml version="1.0" encoding="UTF-8"?>
^


Donc suivant vos conseil voici le script :
<?php
  
  set_time_limit(0);

  $sitemap = "SELECT DISTINCT city FROM `loisirs`";
  $req = $bdd->query($sitemap);

  header('content-type:text/xml');
  $xml= '<?xml version="1.0" encoding="UTF-8"?>'."\n";
  $xml.= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';

  while ($ligne = $req->fetch(PDO::FETCH_ASSOC)) {
    $xml.= '<url>'."\n";
  // toutes les villes avec les diff
    $xml.= '   <loc>http://monsite.fr/actu-de-'.simplification($ligne['city']).'.html</loc>';
    $xml.= '   <changefreq>daily</changefreq>';
    $xml.= '   <priority>0.9</priority>';
    $xml.= '</url>'."\n";
  }  
  $xml.= '</urlset>';

  echo $xml;

?>

Re: problème sitemap et google

Posté : 13 avr. 2016, 00:46
par @rthur
Bonjour,
Tu as des lignes blanches avant ta balise de début <?xml quand on regarde la source généré de ton XML :
view-source:http://lasortie.fr/gen_sitemap.php

Vérifie dans ton fichier PHP que tu n'aies rien avant ta balise <?php, vérifies aussi dans ton éditeur de code que tu sois en encodage UTF8 et surtout SANS BOM si ton éditeur a cette option