Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 重定向到动态站点地图还是通过YIC生成?_Php_.htaccess_Yii_Sitemap - Fatal编程技术网

Php 重定向到动态站点地图还是通过YIC生成?

Php 重定向到动态站点地图还是通过YIC生成?,php,.htaccess,yii,sitemap,Php,.htaccess,Yii,Sitemap,我想为yii站点渲染动态站点地图。 但我无法在url管理器中执行此操作: 'urlManager'=>array( 'showScriptName'=>false, 'rules'=>array( 'sitemap.xml/*'=>'/site/sitemapxml', array('site/sitemapxml', 'pattern'=>'sit

我想为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文件。时间/追索效率会更高吗?

首先,您的规则不正确,请改用此规则:

'rules' => array(                 
    '/sitemap.xml' => '/site/sitemapxml', 
    ...
)
现在,关于你的问题,其实没什么大不了的,你更喜欢哪种方式,每种方式都有自己的优缺点

控制器操作选项 优点:

  • 易于实施和维护。这只是另一个操作,您不会忘记如何在系统中生成站点地图
缺点:

  • 因此,动态内容的性能较低
解决方案: 使用过滤器进行缓存。将此筛选器添加到SiteController:

public function filters()
{
    return array(
        array(
            'COutputCache + sitemap',
            'duration' => 24 * 60 * 60 // cache for 24 hours
        ),
    );
}
不要忘记在配置文件中配置
缓存
组件。用这个。如果您不熟悉此主题,请阅读Yii的最终指南

这是一个非常灵活的解决方案,您可以扩展此示例,使其在需要时从配置文件中读取缓存持续时间

YIC期权 优点:

  • xml只是一个静态文件,由web服务器提供更高效的服务
缺点:

  • 需要定期更新并控制此过程
  • 需要使用框架之外的其他东西,这也需要一些监控
解决方案: 使用cron作业生成
sitemap.xml


虽然最终的决定在很大程度上取决于项目的具体细节,但一般来说,我会坚持第一种方法。

对于高度动态的站点,站点地图可能不是一个好主意。请参阅链接。谢谢您的回答。特别是兑现部分。你能提供一些关于请求兑现的更多信息吗?你能详细说明你的问题吗?缓存是一个模糊的话题。你到底在问什么?我指的是一些到兑现示例的链接,从哪里开始,因为我以前没有做过。我从官方文档开始,然后我喜欢本书中如何在示例上解释缓存。