Créer un sitemap XML avec PHP
Je suis en train de créer un plan de site, qui sera automatiquement mise à jour. J'ai fait quelque chose de similaire avec mon flux RSS, mais ce sitemap refuse de travailler. Vous pouvez le visualiser en direct à http://designdeluge.com/sitemap.xml je pense que le principal problème, c'est que sa ne reconnaît pas le code PHP. Voici la source:
<?php
include 'includes/connection.php';
header("Content-type: text/xml");
echo '<?xml version="1.0" encoding="UTF-8" ?>';
?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84 http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">
<url>
<loc>http://designdeluge.com/</loc>
<lastmod>2010-04-20</lastmod>
<changefreq>weekly</changefreq>
<priority>1.00</priority>
</url>
<url>
<loc>http://designdeluge.com/about.php</loc>
<lastmod>2010-04-20</lastmod>
<changefreq>never</changefreq>
<priority>0.5</priority>
</url>
<?php
$entries = mysql_query("SELECT * FROM Entries");
while($row = mysql_fetch_assoc($entries)) {
$title = stripslashes($row['title']);
$date = date("Y-m-d", strtotime($row['timestamp']));
echo "
<url>
<loc>http://designdeluge.com/".$title."</loc>
<lastmod>".$date."</lastmod>
<changefreq>never</changefreq>
<priority>0.8</priority>
</url>";
} ?>
</urlset>
Le problème est que la dynamique de l'URL (par exemple, ceux qui tiré de la bd) ne sont pas produites et de la sitemap n'est pas conforme. Merci!
EDIT: maintenant, je suis juste essayer d'obtenir le code de travail. Je l'ai configuré comme un fichier PHP sur mon local sur le serveur d'évaluation. Le code ci-dessus est utilisé. Maintenant, rien ne s'affiche rien sur l'écran ou dans la source. Je pense que je fait une erreur de syntaxe, mais je ne peux pas trouver quoi que ce soit. Toute aide est appréciée!
EDIT 2: Ok, je l'ai trié les gars. Apparemment, j'ai eu écho à la déclaration xml avec PHP. Le code final est affiché ci-dessus. Merci pour votre aide!
source d'informationauteur williamg
Vous devez vous connecter pour publier un commentaire.
Si vous jetez un oeil à la
sitemap.xml
généré (à l'aide de l'affichage de la source, dans votre navigateur, par exemple)vous verrez ceci :La
<?php
présent dans cette sortie, montre que code PHP n'est pas interprété.C'est probablement parce que votre serveur ne reconnaît pas
.xml
comme une extension de fichiers qui doit contenir du code PHP.Au moins deux solutions possibles :
sitemap.php
par exemple, de sorte qu'il est interprété par le serveur.Je voudrais ajouter une autre solution :
sitemap.php
fichier qui contient le codesitemap.xml
URL souligne en fait à lasitemap.php
fichierAvec qui, vous aurez la
sitemap.xml
URL, ce qui est agréable (nécessaire ? )mais que le code sera ensitemap.php
il va avoir interprété.Voir Apache
mod_rewrite
.J'ai utilisé William du code (merci) et avec quelques petites modifications qu'il a travaillé pour moi.
Je pense que la ligne:
devrait être la deuxième ligne, après le
<?php
D'ailleurs, juste un petit point à quelqu'un d'autre que des copies, mais il y a un seul caractère espace avant le
<?php
dans la première ligne - si vous avez par mégarde le copier comme je l'ai fait, vous permettra de passer un peu de temps à essayer de comprendre pourquoi le code ne fonctionnera pas pour vous!J'ai dû bidouiller la base de l'instruction select d'un peu trop.
Enfin, à la sortie, j'ai utilisé une variable $domaine, de sorte que ce morceau de code peut être utilisé comme un modèle sans avoir besoin d'y penser (à condition d'utiliser le même nom de la table à chaque fois). La variabe est ajouté à la connectdb.php fichier qui est inclus pour se connecter à la base de données.
Voici ma version de travail de l'William code:
La meilleure solution est de les ajouter à votre apache
.htaccess
fichier la ligne suivante aprèsRewriteEngine On
et puis il suffit d'avoir un fichier
sitemap.php
dans votre dossier racine qui serait normalement accessible viahttp://yoursite.com/sitemap.xml
l'URL par défaut où tous les moteurs de recherche sera d'abord rechercher.Le fichier
sitemap.php
doit commencer par lail fonctionne 🙂