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 に答える