1

我有以下 .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 内部路由来处理站点地图,但是上面的规则不起作用。

站点地图 URL 如下所示:

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

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

4

1 回答 1

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);
}
于 2012-10-18T07:57:04.453 回答