web-dev-qa-db-fra.com

Générer un sitemap automatiquement, faut-il être XML?

Je souhaite créer un plan Sitemap XML (par souci de référencement), ma première tentative a consisté à inclure le menu principal du site/les liens de navigation à l'aide de <?php include ("assets/includes/menu.inc"); ?>:

<li><a href="index.php">Home</a></li>
<li><a href="gallery.php">Gallery</a></li>
<li><a href="contact.php">Contact</a></li>

Vers le fichier sitemap XML suivant:

<?xml version="1.0" encoding="UTF-8"?>

    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

        <url><loc>http://www.example.com/</loc></url> 

    </urlset>

J'ai déjà posé une question ici de "Comment inclure PHP en XML" - apparemment, je ne peux pas le faire, alors mon idée a été jetée à la poubelle. J'ai déjà cherché dans Google "Comment créer un sitemap automatique", mais tout ce que j'ai trouvé est un générateur de sitemap que j'essaie d'éviter.

La question est, est-ce même possible? créer un plan du site qui extraira les liens du fichier .inc principal du site Web? Des idées? A-t-il besoin d'être XML? peut-il être php par exemple?

3
Leo

créer un plan du site qui extraira les liens du fichier .inc principal du site Web?

L'extension n'a pas d'importance. Donc, vous pouvez avoir un fichier php comme

<?php
header ("Content-Type:text/xml");
echo '<?xml version="1.0" encoding="UTF-8"?>
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
        // code to extract and echo links from the file 
echo '   </urlset>';
?>

Pour extraire les liens du code html, voir la page this .

Le code devrait être modifié pour ressembler à celui ci-dessous.

<?PHP
  // Original PHP code by Chirp Internet: www.chirp.com.au
  // Please acknowledge use of this code by including this header.

  $url = "assets/includes/menu.inc";
  $input = @file_get_contents($url) or die("Could not access file: $url");
  $regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>";
  if(preg_match_all("/$regexp/siU", $input, $matches, PREG_SET_ORDER)) {
    foreach($matches as $match) {
      // $match[2] = link address
      // $match[3] = link text 
      echo '<url><loc>' . $match[2] . '</loc></url>'
    }
  }
?>
1
Ranjith

Vous posez deux questions ici.

  1. Un sitemap doit-il être au format XML?

    La réponse simple est non, il n'est pas nécessaire que ce soit XML. Il peut s'agir d'un fichier XML, d'un fichier texte ou d'un flux RSS/Atom (qui est essentiellement du XML), HTML

    Sitemaps HTML : Ceux-ci sont utilisés sur votre site web pour afficher la mise en page en couches de votre site web pour tout client qui le souhaiterait aussi (je ne sais pas pourquoi voudrait aussi). Celles-ci ne sont malheureusement pas appropriées pour être soumises aux moteurs de recherche.

    Flux RSS: Ils sont plutôt utiles pour un flux de commentaires ou d'articles sur un blog, qui sont constamment mis à jour, ce qui en un sens ressemble à un plan du site automatique. de nouveaux contenus/commentaires sur un blog.

    Fichiers XML: Il s’agit en termes simples d’un ensemble de liens au format XML avec des champs supplémentaires tels que lien et éventuellement un dernier champ modifié.

    Fichiers texte: C’était autrefois la méthode préférée de soumission à Yahoo, mais il ya quelque temps, ils ont commencé à accepter les flux XML.

  2. Pouvez-vous créer un plan du site avec une extension .php?

    Fondamentalement, tant que votre fichier PHP retourne et un en-tête XML/type-mime et renvoie un XML valide, tout ira bien. Regardez WordPress, leurs flux RSS sont créés en PHP.

Utilisez la fonction PHP DOM et définissez vos en-têtes:

header( "content-type: application/xml; charset=UTF-8" );
$doc = new DomDocument('1.0', 'UTF-8');

La documentation peut être trouvée ici:

http://www.php.net/manual/en/class.domdocument.php

MODIFIER:

En regardant votre précédent message, vous essayez d’injecter du HTML en XML qui ne fonctionnera pas. Si vous pouvez expliquer pourquoi vous souhaitez faire cela, nous pourrons peut-être vous conseiller.

6
Liam Sorsby

Vous pouvez ajouter des plans de site avec n’importe quelle extension de GWT, à condition qu’ils soient au format XML. Mon site a un sitemap .php où le code PHP génère un fichier XML et fonctionne parfaitement.

0
Ivo van der Veeken