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

如何在cakephp网站中将文件扩展名sitemap.php重写为sitemap.xml?,php,.htaccess,cakephp,Php,.htaccess,Cakephp,我有一个cakephp网站,我在webroot文件夹中找到了sitemap.php。 我想将.htaccess文件中的url重写为sitemap.xml 但是普通的php技术不起作用。 我试着使用下面的方法 RewriteRule ^sitemap\.xml$ xmlsitemap.php [L] RewriteRule ^sitemap$ sitemap.php [L] 但它在cakephp中不起作用。 你知道怎么做吗?任何建议都将不胜感激。应该加载到webroot目录中的唯一文件应该是in

我有一个cakephp网站,我在webroot文件夹中找到了sitemap.php。 我想将.htaccess文件中的url重写为sitemap.xml 但是普通的php技术不起作用。 我试着使用下面的方法

RewriteRule ^sitemap\.xml$ xmlsitemap.php [L]
RewriteRule ^sitemap$ sitemap.php [L]
但它在cakephp中不起作用。
你知道怎么做吗?任何建议都将不胜感激。

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

看一看路由文档。

对于cake,您希望尽可能多地使用默认的automagic路线。 例如: /my_widgets/create将映射到MywdigetController和动作create()

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

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

在routes.php中

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

Router::parseExtensions('xml');
在页面控制器中创建一个名为sitemap的操作。将生成站点地图数据的代码放入该操作中

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

在该文件中放置xml的输出


如果debug设置为0以上,我以前遇到过问题,因此如果您没有看到任何输出,请尝试将debug level设置为0

为什么不直接使用sitemap.xml来显示您的xml站点地图?请使用整个htaccess代码编辑您的问题?另外,与您的根目录相比,
webroot
位于何处?
RewriteCond %{REQUEST_URI} ^/sitemap.xml
RewriteRule ^sitemap\.php$ - [L]