我想为yii网站呈现动态网站地图。 但是我没有在网址管理器中这样做:
'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
另一种选择是通过an extension in terms of a yiic command将sitemap.xml生成为文件。会有更多的时间/追索权吗?
答案 0 :(得分:1)
首先,您的规则不正确,请改用:
'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权威指南的corresponding section。
这是一个非常灵活的解决方案,您可以扩展此示例,以便在需要时从配置文件中读取缓存持续时间。
<强>优点:强>
<强>缺点:强>
<强>解决方案:强>
使用cron作业生成sitemap.xml
。
虽然最终的决定很大程度上取决于项目的具体细节,但总的来说,我坚持第一种方法。