我在这里问了一个关于如何Generate a sitemap automatically, does it need to be XML?
的问题以下是我们得出的解决方案:
<?php
header ("Content-Type:text/xml");
echo '<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
// code to extract and echo links from the file
echo ' </urlset>';
?>
<?PHP
// Original PHP code by Chirp Internet: www.chirp.com.au
// Please acknowledge use of this code by including this header.
$url = "assets/includes/menu.inc";
$input = @file_get_contents($url) or die("Could not access file: $url");
$regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>";
if(preg_match_all("/$regexp/siU", $input, $matches, PREG_SET_ORDER)) {
foreach($matches as $match) {
// $match[2] = link address
// $match[3] = link text
echo '<url><loc>' . $match[2] . '</loc></url>';
}
}
?>
但是,当我尝试时,它会显示错误:http://postimg.org/image/gh5d0k4sx/ - 我尝试删除顶行“header ("Content-Type:text/xml");
”并且它有效,但是我可以删除该行吗?整个事情是为了SEO所以我不知道我们是否可以删除顶线,我做错了什么?
另一个问题:此文件现在被识别为XML文件吗?即使它有.php扩展名?
答案 0 :(得分:4)
您的PHP不会被浏览器接收,因为它是服务器端语言。
header function不会修改页面正文。但是保持它是很重要的,否则浏览器将无法将文档识别为XML。
尝试在脚本的两个部分之间删除关闭和打开PHP标记。它们之间的空白可能会导致您的错误。
?>
<?PHP
修改:点击评论后,请等到您在关闭<url>
之前输出urlset
代码
将该行移至PHP的底部:
echo ' </urlset>';
理解如何使用换行符和双引号来实现类似的效果也符合干净XML的最佳利益。
答案 1 :(得分:0)
抓取工具不会抓取该文件。 根据{{3}}的站点地图规范。 文件名必须是sitemap.xml。
我建议用
创建文件“sitemap.xml”file_put_contents("sitemap.xml", $xmlContent);
静态文件更快,您可以重新创建它。
如何在linux上创建cronjob?
cronjob -e
00 22 * * * /path/to/sitemapBuilder.php
sitemapBuilder.php
的内容:
<?php
$xml = '<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
$url = "assets/includes/menu.inc";
$input = @file_get_contents($url) or die("Could not access file: $url");
$regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>";
if(preg_match_all("/$regexp/siU", $input, $matches, PREG_SET_ORDER)) {
foreach($matches as $match) {
// $match[2] = link address
// $match[3] = link text
$xml .= '<url><loc>' . $match[2] . '</loc></url>';
}
}
$xml .= '</urlset>';
file_put_contents('sitemap.xml', $xml);
?>
将sitemap.xml写入您的Web项目的根文件夹,例如在index.php旁边。
您也可以使用Sitemap验证程序指向您的网址并检查文件的有效性。 例如,http://www.sitemaps.org/protocol.html可能有助于此。