php - 使用 PHP 创建 XML 站点地图

标签 php xml xml-sitemap

我正在尝试创建一个会自动更新的站点地图。我对我的 RSS 提要做了一些类似的事情,但是这个站点地图无法工作。您可以在 http://designdeluge.com/sitemap.xml 上实时查看我认为主要问题是它无法识别 PHP 代码。这是完整的来源:

 <?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>

问题在于未生成动态 URL(例如,从数据库中提取的 URL)并且站点地图无法验证。谢谢!

编辑:现在,我只是想让代码本身正常工作。我在本地测试服务器上将其设置为 PHP 文件。正在使用上面的代码。现在,屏幕上或源代码中什么都不显示。我在想我犯了一个语法错误,但我找不到任何东西。感谢您提供任何帮助!

编辑 2: 好吧,伙计们,我把它整理好了。显然,我不得不用 PHP 回应 xml 声明。最终代码贴在上面。感谢您的帮助!

最佳答案

如果你看一下sitemap.xml这是生成的(例如,在您的浏览器中使用查看源代码),您会看到:

<?php header('Content-type: text/xml'); ?>
<?xml version="1.0" encoding="UTF-8" ?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84" xmlns:xsi="http:/
...

<?php出现在该输出中,表明 PHP 代码未被解释


这可能是因为 您的网络服务器无法识别 .xml作为应包含 PHP 代码的文件的扩展

至少有两种可能的解决方案:

  • 重新配置您的服务器,使 XML 文件通过 PHP 解释器(这可能不是一个好主意:这可能会导致现有文件出现问题!)
  • 将站点地图的扩展名更改为 sitemap.php例如,它由您的服务器解释。


我会添加另一个解决方案:

  • 有一个sitemap.php包含代码的文件
  • 并且使用RewriteRule 所以sitemap.xml URL 实际上指向 sitemap.php文件

这样,您将拥有 sitemap.xml URL,很好(必需?),但代码将在 sitemap.php 中, 它会被解释。

参见 Apache's mod_rewrite .

关于php - 使用 PHP 创建 XML 站点地图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2747801/

相关文章:

php - 使用 PHP Curl 发布数据并检索响应?

php - CakePHP - 错误 : SQLSTATE[HY000]: General error: 1364 Field 'title'

php - setInterval,ajax请求

java - 如何解析实体声明并获取 XML 中的文件路径?

seo - 同一站点的多个域的站点地图

php - 在 Windows 8.1 上安装 Apache、PHP、MySQL - Apache 无法启动 - 请求的操作失败

c# - 从 XML 中获取单个元素的高效方法 - C#

java - 如何使用 Java 从 XML 中读取值并将其保存在 Hashmap 中

python-3.x - Google 无法获取我的 sitemap.xml 文件

wordpress - 站点地图生成器只检测主页,尖叫 Frog 也只检测主页