我需要使用 CakePHP 自动生成站点地图。我按照这个教程进行操作: http://designaeon.com/blog/2012/07/cakephp-xml-sitemap-generation/ 一步一步来,但是我的http://mysite123.com/sitemap.xml只显示以下错误:
此页面包含以下错误:
第 2 行第 6 列错误:仅允许在文档开头进行 XML 声明 下面是出现第一个错误之前的页面呈现。
我的代码如下所示:
Controller /SitemapsController.php:
<?php
class SitemapsController extends AppController{
var $name = 'Sitemaps';
var $uses = array('Video');
function index(){
$this->set('videos', $this->Video->find('all'));
Configure::write ('debug', 0);
}
}
?>
查看/Sitemaps/xml/index.ctp:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<?php foreach ($videos as $vid): ?>
<url>
<loc><?php echo Router::url('/',true); ?>post/
<?php echo $vid['Video']['id'];?></loc>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<?php endforeach; ?>
</urlset>
View/Layouts/xml/default.ctp:
<?php header('Content-type: text/xml'); ?>
<?php echo $content_for_layout; ?>
routes.php:
Router::parseExtensions('xml');
Router::connect('/sitemap', array('controller' => 'sitemaps', 'action' => 'index'));
你能帮我一下吗?
最佳答案
我建议将其放入 Controller 的操作中,而不是在布局中使用 PHP 设置 header 值:
$this->RequestHandler->respondAs('xml');
这是真正的“蛋糕”方式,应该可以解决您的问题(可能是空格或标题之前输出的内容)。
当然,您需要使用 RequestHandler
组件,因此如果您还没有它,请将其放入 Controller 中:
var $components = array('RequestHandler');
关于php - CakePHP 站点地图错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23408838/