我想创建一个XML站点地图(为了SEO),我首次尝试实现这一点是通过使用<?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>
到以下XML站点地图文件:
<?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>
我已经问过question here“如何将PHP包含到XML中” - 显然我不能这样做,所以我的想法被抛到了垃圾箱。我已经用Google搜索了“如何创建自动站点地图”,但我发现的所有内容都是Sitemap Generators,我正在努力避免。
问题是,甚至可能吗?创建一个站点地图,从网站主.inc文件中提取链接?有什么想法吗?
答案 0 :(得分:1)
如果您安装了DOM
扩展程序,则可以加载HTML导航,然后创建XML站点地图。
// Create an empty document, load it with your HTML
$dom = new DOMDocument('1.0', 'utf-8');
$dom->loadHTML('<li><a href="index.php">Home</a></li>...');
// Get links
$links = array();
foreach($dom->getElementsByTagName('a') as $link){
$links[] = $link->getAttribute('href');
}
现在我们在$links
中有一系列相对网址。您现在可以使用DOM
扩展名生成XML文档(推荐但更复杂),或直接使用$links
生成输出:
<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; // Be wary of "?>" in your document ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<?php foreach($links as $link): ?>
<url><loc>http://www.mydomain.com<?php echo htmlspecialchars($link, ENT_XML1, 'UTF-8'); ?></loc></url>
<?php endforeach; ?>
</urlset>