标签和标头的Google网站管理员站点地图问题

时间:2018-01-07 14:37:24

标签: php xml sitemap google-webmaster-tools

我正在尝试制作新闻站点地图和站点地图文件,但在谷歌网站管理员工具测试中它显示两个错误:

  1. 无效的XML标记
  2. 预期:您的Sitemap或Sitemap索引文件未正确声明命名空间。您的Sitemap或Sitemap索引文件未正确声明命名空间。预期:http://www.w3.org/1999/xhtml找到:http://www.sitemaps.org/schemas/sitemap/0.9
  3. 任何帮助提前致谢

    header("Content-Type: application/xml; charset=utf-8");
    
    echo '<?xml version="1.0" encoding="UTF-8"?>'.PHP_EOL; 
    
    echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">' . PHP_EOL;
    
    $base_url = "https://www.example.com";
    
    while($row = mysqli_fetch_array($sitegrab))
    {
        echo '<url>' . PHP_EOL;
        echo '<loc>'.$base_url.'</loc>' . PHP_EOL;
        echo '<news:name>'.$row['Website'].'</news:name>' . PHP_EOL;
        echo '<news:link>'.$row['Link'].'</news:link>' . PHP_EOL;
        echo '<changefreq>daily</changefreq>' . PHP_EOL;
        echo '<priority>1</priority>' . PHP_EOL;
        echo '</url>' . PHP_EOL;
    }
    
    echo '</urlset>' . PHP_EOL;
    ?>
    

1 个答案:

答案 0 :(得分:0)

确保在将XML构建为文本时正确转义特殊字符。例如,&很有可能成为URL的一部分,需要在XML字符串中以&amp;进行转义。

更好的解决方案是使用XML API(如XMLWriter)来创建XML。它会照顾逃跑。