Zend Framework中站点地图的RewriteRule

时间:2012-10-18 07:16:20

标签: .htaccess zend-framework mod-rewrite

我有以下.htaccess规则:

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteRule ^sitemap_(.*)\.xml$ /xml/sitemap/$1 #[L]

RewriteRule ^.*$ /index.php [NC,L]

不幸的是,我无法使用内部Zend Framework路由来处理站点地图,但上述规则不起作用。

站点地图网址如下所示:

/sitemap_index.xml
/sitemap_pages.xml
/sitemap_news.xml

在我设置R = 301重定向或注释掉最后一条规则的情况下,所需的重写工作正常。这两个都不是选择。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

不能说.htaccess。 zend路由器可能更容易做到。把它放在引导程序中:

public function _initRouter() {
    $frontController = Zend_Controller_Front::getInstance();
    $router = $frontController->getRouter();
    $route = new Zend_Controller_Router_Route_Regex(
                    'sitemap_(.*)\.xml',
                    array(
                        'controller' => 'xml',
                        'action' => 'sitemap'
                    ),
                    array(
                        1 => 'sitemap'
                    )
    );
    $router->addRoute('sitemap', $route);
}