【问题标题】:How to rewrite file extention sitemap.php to sitemap.xml in cakephp website?如何在cakephp网站中将文件扩展sitemap.php重写为sitemap.xml?
【发布时间】:2018-06-08 19:13:38
【问题描述】:

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

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

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

【问题讨论】:

  • 你为什么不直接使用sitemap.xml来显示你的XML站点地图?
  • 您能用您的整个 htaccess 代码编辑您的问题吗?另外,与您的根目录相比,webroot 位于何处?

标签: php .htaccess cakephp


【解决方案1】:

应该在 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 中创建一个名为站点地图的操作。将生成站点地图数据的任何代码放入该操作中。

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

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

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

【讨论】:

    【解决方案2】:
    RewriteCond %{REQUEST_URI} ^/sitemap.xml
    RewriteRule ^sitemap\.php$ - [L]
    

    【讨论】:

      猜你喜欢
      • 2013-05-20
      • 1970-01-01
      • 2017-03-28
      • 2011-12-31
      • 2018-04-03
      • 2023-03-24
      • 1970-01-01
      • 2017-03-07
      • 2011-09-25
      相关资源
      最近更新 更多