创建 PHP 站点地图 XML 脚本
Creating A PHP Sitemap XML Script
我有一个数据库驱动的网站,我每天都会添加它,我想用 php 为 google 制作一个 xml 站点地图,但我真的不确定如何做做这个。使用我习惯的代码创建了这个:
<?php
$get_articles_sql = "SELECT * FROM articles ORDER BY added DESC";
$get_articles_res = mysqli_query($con, $get_articles_sql);
while($article = mysqli_fetch_assoc($get_articles_res)){
$article_id = $article["id"];
$article_title = $article["title"];
$article_added = $article["added"];
$article_date = date('Y-M-D', strtotime($article_added));
$article_url_title = preg_replace('/[^a-zA-Z0-9_ %\[\]\.\(\)%&-]/s', '', $article_title);
$article_url_title = strtolower(str_replace(" ","-",$article_url_title));
$list_articles .= "
<url>
<loc>http://www.website.com/article.php?id=$article_id&title=$article_url_title</loc>
<lastmod>$article_date</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
";
?>
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.website.com</loc>
<lastmod>2005-01-01</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<?php echo $list_articles; ?>
</urlset>
然而,这 returns 是 <?xml
行的一个错误。使用我正在使用的代码方法是否有正确的方法?
您的服务器可能启用了短标签,这会导致 XML 声明中的 <?
抛出解析错误。最简单的解决方法是 echo
那一行。
echo '<?xml version="1.0" encoding="UTF-8"?>'
?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
您的 while 循环似乎还缺少右括号,但我认为这只是一个拼写错误。
我有一个数据库驱动的网站,我每天都会添加它,我想用 php 为 google 制作一个 xml 站点地图,但我真的不确定如何做做这个。使用我习惯的代码创建了这个:
<?php
$get_articles_sql = "SELECT * FROM articles ORDER BY added DESC";
$get_articles_res = mysqli_query($con, $get_articles_sql);
while($article = mysqli_fetch_assoc($get_articles_res)){
$article_id = $article["id"];
$article_title = $article["title"];
$article_added = $article["added"];
$article_date = date('Y-M-D', strtotime($article_added));
$article_url_title = preg_replace('/[^a-zA-Z0-9_ %\[\]\.\(\)%&-]/s', '', $article_title);
$article_url_title = strtolower(str_replace(" ","-",$article_url_title));
$list_articles .= "
<url>
<loc>http://www.website.com/article.php?id=$article_id&title=$article_url_title</loc>
<lastmod>$article_date</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
";
?>
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.website.com</loc>
<lastmod>2005-01-01</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<?php echo $list_articles; ?>
</urlset>
然而,这 returns 是 <?xml
行的一个错误。使用我正在使用的代码方法是否有正确的方法?
您的服务器可能启用了短标签,这会导致 XML 声明中的 <?
抛出解析错误。最简单的解决方法是 echo
那一行。
echo '<?xml version="1.0" encoding="UTF-8"?>'
?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
您的 while 循环似乎还缺少右括号,但我认为这只是一个拼写错误。