如何解决无法生成XML网站地图
| 我已经编写了一些用于生成站点地图的PHP代码。在VPS问题迫使我重新安装操作系统(并更新我的VPS)之前,此代码运行良好。现在,相同的代码无法在根目录中生成所需的sitemap1.xml。function write_xml($url,$priority = 0.7)
{
global $handle,$counter,$file_number,$filename;
if($counter == 50000)
{
$file_number++;
$counter = 0;
// Attach end of file,and close it here.
fwrite($handle,\"</urlset>\\n\");
fclose($handle);
}
if($counter == 0)
{
// Open next file here.
$filename = \"sitemap\" . $file_number . \".xml\";
$handle = fopen($filename,\"w+\");
fwrite($handle,\'<?xml version=\"1.0\" encoding=\"UTF-8\"?>\' . \"\\n\");
fwrite($handle,\'<urlset xmlns=\"http://www.google.com/schemas/sitemap/0.9\">\' . \"\\n\");
}
if($url != \"\" && $url != \"END\")
{
fwrite($handle,\"\\t <url>\\n\");
fwrite($handle,\"\\t\\t<loc>$url</loc>\\n\");
fwrite($handle,\"\\t\\t<priority>$priority</priority>\\n\");
fwrite($handle,\"\\t</url>\\n\");
}
if($url == \"\")
{
fwrite($handle,\"</urlset>\\n\");
fclose($handle);
}
// Increment counter for every URL.
$counter++;
}
?>
请帮助我理解为什么未将URL写入sitemap1.xml文件。
解决方法
该代码似乎工作正常。问题必须出在调用“ 1”的代码中。
只是一些次要的最佳实践-而不是:
if($counter == 50000)
使用起来更安全:
if ($counter >= 50000)
, 根文件夹中的权限绝对是一个问题。在许多配置中,根文件夹属于帐户所有者,但是apache进程以“ nobody”用户身份运行。您有两种选择:
将站点地图创建到对每个人都具有写权限的子文件夹中(0777),并使用htaccess中的规则将机械手指向正确的方向:
RewriteEngine开
RewriteRule ^ sitemap(。*)。xml子文件夹/sitemap$1.xml [L]
首先以根用户(帐户所有者)的身份创建所有xml文件,然后将其权限更改为所有人均可写入:0666
或者,您可能希望动态生成站点地图,并通过脚本来交付它们。在这种情况下,其网址将类似于sitemap.xml?page = 1,但是您仍然需要在.htaccess中放置一个规则
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。