Я создал файл sitemap.xml
и сохранил его в app / webroot /, и это файл, который я могу просмотреть из браузера, например, example.com/sitemap.xml
. Я создал sitemap function in controller
где я получу данные из базы данных и перейду к view/listings/sitemap.ctp
. Также я добавил Router::connect
в файле app / config / routes.php.
Проблема в том, что данные не отображаются в файле example.com/sitemap.xml?
Файл диспетчера списков:
var $name = 'Listings'; var $components = array('RequestHandler'); public function sitemap(){ $this->layout='ajax'; $this->RequestHandler->respondAs('xml'); $listData = $this->Listing- >find('all',array('conditions'=>array('Listings.status'=>1) ,'order'=> array('Listings.created'=>'Desc'))); $this->set(compact('listData')); }
Файл Sitemap.ctp:
<?php App::uses('CakeTime', 'Utility'); ?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc><?php echo $html->link('/',true); ?></loc> <changefreq>weekly</changefreq> </url> <?php foreach ($listData as $list){ ?> <url> <loc><?php echo $html->link(array('controller' => 'listings', 'action' => 'sitemap',$list['listings']['id']),true); ?></loc> <lastmod><?php echo $this->Time->toAtom($list['listings']['created']); ? ></lastmod> <changefreq>weekly</changefreq> </url> <?php } ?> </urlset>
Файл Routes.php:
Router::connect('/sitemap.xml',array('controller' => 'listings', 'action' => 'sitemap', 'ext'=>'xml')); Router::parseExtensions('xml');
Когда я пытаюсь получить доступ к / listings / sitemap в браузере, появляется сообщение об ошибке: