Souci avec création d'un sitemap

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Mathieu M., 26 Février 2010.

  1. Mathieu M.
    Mathieu M. WRInaute discret
    Inscrit:
    30 Décembre 2009
    Messages:
    112
    J'aime reçus:
    0
    Bonjour à tous,

    En cherchant ici-même, je suis tombé sur un petit script php pour créer un sitemap. En essayant de l'adapter à mon site, je me rend compte qu'il manque quelque chose... voici le fichier sitemap.php :

    PHP:
    <span class="syntaxhtml"><br /><span class="syntaxdefault"><?php<br />set_time_limit</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">// Chemin relatif où seront écrits les sitemaps, sans extension<br />// ci dessous, dans le cas où le sitemap est à la racine et ce fichier dans un dossier comme /admin/<br /></span><span class="syntaxdefault">$sm</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"../"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$root</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"http://www.example.com/"</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// Site web sans "/" à la fin<br /><br />// Configuration de la connexion à la base de données<br /></span><span class="syntaxdefault">$host</span><span class="syntaxkeyword">=</span><span class="syntaxstring">""</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$base</span><span class="syntaxkeyword">=</span><span class="syntaxstring">""</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">=</span><span class="syntaxstring">""</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$password</span><span class="syntaxkeyword">=</span><span class="syntaxstring">""</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxcomment">// Initialisation des compteurs<br /></span><span class="syntaxdefault">$a</span><span class="syntaxkeyword">=</span><span class="syntaxstring">""</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// La chaîne contenant les <url></url><br /></span><span class="syntaxdefault">$pp</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$u</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxcomment">// Pages statiques si nécessaire<br />//$r=array( // Ce tableau contient les URLs statiques<br />//"/page.html",<br />//"/andre/"<br />//);<br /><br /></span><span class="syntaxdefault">foreach </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$r as $v</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">$a</span><span class="syntaxkeyword">.=</span><span class="syntaxstring">"<br /><url>\r\n<br /><loc>"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$root</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$v</span><span class="syntaxkeyword">.</span><span class="syntaxstring">"</loc>\r\n<br /><priority>0.9</priority>\r\n<br /><changefreq>hourly</changefreq>\r\n<br /></url>\r\n<br />"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$u</span><span class="syntaxkeyword">++;<br /></span><span class="syntaxdefault">if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$u</span><span class="syntaxkeyword">%</span><span class="syntaxdefault">30000</span><span class="syntaxkeyword">==</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{</span><span class="syntaxdefault">ze</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$a</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$pp</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$sm</span><span class="syntaxkeyword">);}<br />}<br /><br /></span><span class="syntaxcomment">// Pages dynamiques<br /></span><span class="syntaxdefault">$e</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"select ar_urlp from articles where ar_suite in (0,1)"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$link</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">mysql_connect</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$host</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$password</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">mysql_select_db</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$base</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$link</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">$query</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">mysql_query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$e</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$link</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">mysql_close</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">echo mysql_error</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">while </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$aa</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">mysql_fetch_row</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$query</span><span class="syntaxkeyword">))</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxcomment">// Pour chaque page, on construit l'url selon nos propres critères<br /></span><span class="syntaxdefault">$url </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $aa</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">];</span><span class="syntaxdefault">    <br />if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">substr</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$url</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> 0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> 4</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword"><></span><span class="syntaxdefault"> </span><span class="syntaxstring">"http"</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{</span><span class="syntaxdefault">$new_url </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"http://www.example.com/"</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault">rtrim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">substr</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$url</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">250</span><span class="syntaxkeyword">));}</span><span class="syntaxdefault">else </span><span class="syntaxkeyword">{</span><span class="syntaxdefault">$new_url </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $url</span><span class="syntaxkeyword">;}<br /></span><span class="syntaxcomment">//<br /></span><span class="syntaxdefault">$a</span><span class="syntaxkeyword">.=</span><span class="syntaxstring">"<br /><url>\r\n<br /><loc>"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$new_url</span><span class="syntaxkeyword">.</span><span class="syntaxstring">"</loc>\r\n<br /><priority>0.8</priority>\r\n<br /><changefreq>daily</changefreq>\r\n<br /></url>\r\n<br />"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$u</span><span class="syntaxkeyword">++;<br /></span><span class="syntaxdefault">if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$u</span><span class="syntaxkeyword">%</span><span class="syntaxdefault">30000</span><span class="syntaxkeyword">==</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{</span><span class="syntaxdefault">ze</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$a</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$pp</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$sm</span><span class="syntaxkeyword">);}<br />}<br /><br /></span><span class="syntaxcomment">// Si vous avez différents types d'url ou plusieurs bases etc..., reproduisez le paragraphe ci-dessus en l'adaptant<br /><br />//fin<br /></span><span class="syntaxdefault">ze</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$a</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$pp</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$sm</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">$a</span><span class="syntaxkeyword">=</span><span class="syntaxstring">""</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxcomment">// La fonction "ze" crée un fichier sitemap toutes les 30.000 URLs<br /></span><span class="syntaxdefault">function ze</span><span class="syntaxkeyword">(&</span><span class="syntaxdefault">$a</span><span class="syntaxkeyword">,&</span><span class="syntaxdefault">$pp</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$sm</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">$ax1</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<br /><urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"<br />xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"<br />xsi:schemaLocation=\"https://www.google.com/schemas/sitemap/0.84<br />https://www.google.com/schemas/sitemap/0.84/sitemap.xsd\">\r\n<br />"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$ax2</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"<br /></urlset>\r\n<br />"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$xx</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">$ax1</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$a</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$ax2</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$a</span><span class="syntaxkeyword">=</span><span class="syntaxstring">""</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$aze</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">gzencode</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$xx</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">$fp</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">fopen</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$sm</span><span class="syntaxkeyword">.</span><span class="syntaxstring">"_"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$pp</span><span class="syntaxkeyword">.</span><span class="syntaxstring">".gz"</span><span class="syntaxkeyword">,</span><span class="syntaxstring">"w"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">fputs</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$fp</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$aze</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">fclose</span><span class="syntaxkeyword">();<br /><br /></span><span class="syntaxdefault">$fp</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">fopen</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$sm</span><span class="syntaxkeyword">.</span><span class="syntaxstring">"_"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$pp</span><span class="syntaxkeyword">.</span><span class="syntaxstring">".xml"</span><span class="syntaxkeyword">,</span><span class="syntaxstring">"w"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">fputs</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$fp</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$xx</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">fclose</span><span class="syntaxkeyword">();<br /><br /></span><span class="syntaxdefault">$pp</span><span class="syntaxkeyword">++;<br /><br />}<br /><br /></span><span class="syntaxdefault">$pl</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault">$xx</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<br /><sitemapindex xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\r\n<br />"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">while </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$pl</span><span class="syntaxkeyword"><</span><span class="syntaxdefault">$pp</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">$xx</span><span class="syntaxkeyword">.=</span><span class="syntaxstring">"<br /><sitemap>\r\n<br /><loc>"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$root</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">str_replace</span><span class="syntaxkeyword">(</span><span class="syntaxstring">".."</span><span class="syntaxkeyword">,</span><span class="syntaxstring">""</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$sm</span><span class="syntaxkeyword">).</span><span class="syntaxstring">"_"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$pl</span><span class="syntaxkeyword">.</span><span class="syntaxstring">".gz</loc>\r\n<br /></sitemap>\r\n<br />"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$pl</span><span class="syntaxkeyword">++;<br />}<br /></span><span class="syntaxdefault">$xx</span><span class="syntaxkeyword">.=</span><span class="syntaxstring">"<br /></sitemapindex><br />"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$fp</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">fopen</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$sm</span><span class="syntaxkeyword">.</span><span class="syntaxstring">".xml"</span><span class="syntaxkeyword">,</span><span class="syntaxstring">"w"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">fputs</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$fp</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$xx</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">fclose</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">?><br /></span></span>
    Et en consultant example.com/sitemap.php, je tombe sur le beau message d'erreur :

    Pourriez-vous me donner un coup de main afin de faire fonctionner tout cela ? :wink:


    Merci.
     
  2. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 779
    J'aime reçus:
    0
    Code:
    Warning: fopen(../_0.gz) [function.fopen]: failed to open stream: Permission denied in /home/web/example/sitemap.php on line 82
    Soit un mets un chmod sur le dossier, soit tu créés le fichier avec le bon chmod.

    Par contre t'as des trucs bien bizarre :
    Code:
    Warning: fopen(../.xml) [function.fopen]: failed to open stream: Permission denied in /home/web/example/sitemap.php on line 110
     
  3. Mathieu M.
    Mathieu M. WRInaute discret
    Inscrit:
    30 Décembre 2009
    Messages:
    112
    J'aime reçus:
    0
    J'ai appliqué un chmod 777 sur sitemap.php, mais sans succès, j'obtiens toujours les mêmes erreurs. Une idée ?


    Merci :wink:
     
  4. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 779
    J'aime reçus:
    0
    C'est pas sitemap.php qui a un problème de CHmod ;)
    C'est tes :
    _0.gz
    .xml
    _0.xml etc... (tes noms sont vraiment bizarre)
     
  5. Mathieu M.
    Mathieu M. WRInaute discret
    Inscrit:
    30 Décembre 2009
    Messages:
    112
    J'aime reçus:
    0
    Je t'avoue bloquer car... ces fichiers n'existent pas... :s Ai-je zappé quelque chose pour faire fonctionner le code php ?


    Merci.
     
  6. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 779
    J'aime reçus:
    0
    jutement ton php veut écrire sur ces fichiers mais il n'a pas la permission de les faire.
    Donc tu les créé et tu mets un bon CHMOD et ça devrait avancer un peu le shimiliblick
     
  7. Mathieu M.
    Mathieu M. WRInaute discret
    Inscrit:
    30 Décembre 2009
    Messages:
    112
    J'aime reçus:
    0
    C'est fait. Bon maintenant le hic c'est que ces fichiers sont vides... :/ J'ai (encore) oublié une étape ?

    Question bis : je trouve cela très compliqué... si quelqu'un a un petit script php tout simple pour générer un sitemap dynamique sur un gros site (plus de 30000 URLs), je suis preneur.


    Merci.
     
  8. Mathieu M.
    Mathieu M. WRInaute discret
    Inscrit:
    30 Décembre 2009
    Messages:
    112
    J'aime reçus:
    0
    Petit up au cas où... ;-)
     
  9. Mathieu M.
    Mathieu M. WRInaute discret
    Inscrit:
    30 Décembre 2009
    Messages:
    112
    J'aime reçus:
    0
    Pas d'idée ou conseil de script pour créer un sitemap dynamique ?


    Merci ;-)
     
  10. Mathieu M.
    Mathieu M. WRInaute discret
    Inscrit:
    30 Décembre 2009
    Messages:
    112
    J'aime reçus:
    0
    Bonjour,

    J'ose un up car j'aimerais vraiment beaucoup créer un sitemap ;-)


    Merci.
     
  11. JulienV
    JulienV WRInaute discret
    Inscrit:
    18 Mars 2010
    Messages:
    164
    J'aime reçus:
    0
    Bonsoir,

    Pourquoi ne pas créer un dossier en CHMOD 777 et modifier légèrement votre script pour qu'il enregistre ces fichiers dans CE dossier ?
     
  12. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 371
    J'aime reçus:
    2
    J'ai jamais trop compris l'intérêt de faire des sitemaps en browsant pour des sites qui sont manifestement constitués à partir d'une base de données.
    Suffit de faire un petit fichier php qui reprend la liste des urls dans la base, non ?
     
  13. Mathieu M.
    Mathieu M. WRInaute discret
    Inscrit:
    30 Décembre 2009
    Messages:
    112
    J'aime reçus:
    0
    Bonsoir,

    Car je reconnais tout bêtement que ça dépasse mes compétences en php...

    La base d'articles est en effet mise en base de données.
    Je sui souvert à toute proposition de code fonctionnel pour générer un sitemap automatique fonctionnel si quelqu'un a ça :wink: (le code du message #1 a été trouvé par hasard sur le forum de WRI, mais je suis incapable de le faire fonctionner).


    Merci par avance :wink:
     
  14. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 371
    J'aime reçus:
    2
    Tu fais simplement une requete sur ta base de données, tu formattes la chaine de sortie pour répondre au format, tu fais un "foreach echo" et basta
    et dans ton .htaccess, tu fais une regle de réécriture pour que le fichier qui s'appelle sitemap.xml (compris par google) soit en réalité un sitemap.php :)
     
  15. Mathieu M.
    Mathieu M. WRInaute discret
    Inscrit:
    30 Décembre 2009
    Messages:
    112
    J'aime reçus:
    0
    "Basta" c'est vite dit, j'ai rien compris à ton explication :oops: Je précise que, bien évidemment, si j'avais les compétences php pour réaliser un sitemap, je ne serais pas en train de vous poser ces questions...

    N'existe-il pas un tutoriel "pas à pas" bien foutu, ou un script tout prêt (avec juste les identifiants de la base de données à renseigner par exemple) ?


    Merci :wink:
     
  16. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 371
    J'aime reçus:
    2
    Non, parce que tout dépend de la structure de ta base de données et de la façon de faire tes urls ^^

    Maintenant, pour moi quelqu'un qui tripote les scripts php, c'est quelqu'un qui sait
    - se connecter à une base
    - faire une requete sélection
    - passer le résultat dans une array
    - parcourir l'array pour traiter le résultat

    si ce que je dis c'est du chinois.... soit tu laisses tomber, soit tu fouilles dans le site du zéro :)
     
Chargement...
Similar Threads - Souci création sitemap Forum Date
Souci avec le code APE Droit du web (juridique, fiscalité...) 2 Août 2019
Résolu Souci de redirection censées éviter contenu dupliqué Débuter en référencement 31 Juillet 2019
WordPress Soucis 404 suite changement structure permaliens Référencement Google 18 Juin 2019
Souci de plantage en mode édition. WP et Xen Foro Administration d'un site Web 17 Juin 2019
Soucis d'affichage de publicité AdSense 4 Janvier 2018
soucis d'indexation Demandes d'avis et de conseils sur vos sites 27 Octobre 2017
Soucis d'affichage dans Google ! Référencement Google 22 Avril 2017
souci avec paiement paypal sur boutique en ligne? e-commerce 13 Février 2017
Désindexation images - Pénalité? Souci technique? Débuter en référencement 3 Octobre 2016
Comment désindéxer un article récurrent ? (je vous explique mon souci) Crawl et indexation Google, sitemaps 15 Septembre 2016
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice