Я хочу сделать динамическую карту сайта для yii сайта.
Но я не смог сделать это в менеджере URL:
'urlManager'=>array(
'showScriptName'=>false,
'rules'=>array(
'sitemap.xml/*'=>'/site/sitemapxml',
array('site/sitemapxml', 'pattern'=>'sitemap.xml', 'urlSuffix'=>''),
...
поэтому я повернулся к .htaccess
и я добавил перенаправление как это:
Redirect 301 /app3/sitemap.xml http://tarex.ru/app3/index.php/?r=site/sitemapxml
Другой вариант — создать файл sitemap.xml в виде файла через расширение с точки зрения команды yiic. Будет ли это более эффективно использовать время / ресурсы?
Прежде всего, ваше правило было неверным, используйте это вместо:
'rules' => array(
'/sitemap.xml' => '/site/sitemapxml',
...
)
Теперь, что касается вашего вопроса, это не имеет большого значения, какой путь вы предпочитаете, у каждого из них есть свои плюсы и минусы.
Плюсы:
Минусы:
Решение:
использование COutputCache фильтр для кеширования. Добавьте этот фильтр в свой SiteController:
public function filters()
{
return array(
array(
'COutputCache + sitemap',
'duration' => 24 * 60 * 60 // cache for 24 hours
),
);
}
Не забудьте настроить cache
компонент в вашем файле конфигурации. использование CFileCache для этого. Прочитайте соответствующий раздел Полное руководство по Yii, если вы не знакомы с этой темой.
Это довольно гибкое решение, вы можете расширить этот пример, чтобы при необходимости показывать продолжительность кеширования из вашего файла конфигурации.
Плюсы:
Минусы:
Решение:
использовать задание cron для генерации sitemap.xml
,
Хотя окончательное решение сильно зависит от конкретных деталей проекта, в целом, я бы придерживался первого подхода.
Других решений пока нет …