如何将文件扩展名sitemap.php重写为cakephp网站中的sitemap.xml?

时间:2014-11-15 20:32:21

标签: php .htaccess cakephp

我有一个cakephp网站,我在webroot文件夹中找到了sitemap.php。 我想将.htaccess文件中的url重写为sitemap.xml 但正常的PHP技术不起作用。 我尝试使用以下内容。

RewriteRule ^sitemap\.xml$ xmlsitemap.php [L]
RewriteRule ^sitemap$ sitemap.php [L]

但它在cakephp中不起作用。 知道怎么做吗?任何建议将不胜感激。

2 个答案:

答案 0 :(得分:0)

应该在webroot目录中加载的唯一文件应该是index.php。您的应用程序应该从该点处理路由。要自定义路由,请查看Config文件夹中的routes.php文件。

查看路由文档。 http://book.cakephp.org/2.0/en/development/routing.html

对于蛋糕,您希望尽可能使用默认的自动路线。 例如: / my_widgets / create将映射到MyWdigetsController和动作create()

我建议移动sitemap.php中的任何功能,并将其移动到现有的控制器操作中。您还可以使用cake的parseExtensions功能为您提供正确的标题并为您加载正确的文件。

获取/sitemap.xml以加载xml站点地图的示例。

在你的routes.php中

Router::connect(
    '/sitemap.xml',
    array('controller' => 'pages', 'action' => 'sitemap', 'ext'=>'xml')
);

Router::parseExtensions('xml');

在PagesController中创建一个名为sitemap的动作。将任何代码生成您的站点地图数据放在该操作中。

在Views / Pages目录中,创建一个名为xml的文件夹,并放置一个名为sitemap.ctp的文件

在该文件中放置xml的输出。

如果将调试设置为高于0,我之前遇到了问题,所以如果看不到任何输出,请尝试将调试级别设置为0

答案 1 :(得分:0)

RewriteCond %{REQUEST_URI} ^/sitemap.xml
RewriteRule ^sitemap\.php$ - [L]