我正在尝试创建一个将自动更新的站点地图.我已经做了类似于我的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)未生成,并且站点地图将无法验证.谢谢!
编辑:现在,我只是试图让代码本身工作.我在本地测试服务器上设置为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网址,这是很好的(必需的),但是由于代码将在sitemap.PHP中,所以会被解释.
见Apache’s mod_rewrite.