【问题标题】:Routing users to webroot subfolder in cakephp将用户路由到 cakephp 中的 webroot 子文件夹
【发布时间】:2015-01-19 19:54:15
【问题描述】:

我希望网站的 / 转到 webroot 中的子文件夹,例如 /app/webroot/frontend/ ,并将 /admin 的所有内容转到 cakephp 的标准控制器和操作。

原因是,我有一个标准的 html 页面作为前端,它使用位于根目录中的 cakephp 中的 ajax 获取数据。我不想使用重定向,这样当用户访问该站点时,他们会被重定向到 /app/webroot/frontend(在 URL 中看到)。现在可以通过 /

访问管理员

或者将整个 cakephp 应用程序移动到子文件夹 admin 并让站点在 root / 中运行是否明智?

【问题讨论】:

  • 明智的做法是将 HTML 内容包含在 Cake 中,将其重构为 CakePHP 应用程序的一部分(控制器+操作或只是 Pages 页面 - 并可能在顶部使用一些路由),并且不要试图破解它。拥有一个完整的 CakePHP 应用程序,这样您就可以利用框架而不是与之抗衡。
  • 好的,很清楚。但是我如何让其余的行为像 root 是 /admin ?
  • 为什么 /admin 永远是根? / 是根,而 /admin 是子根,您可以指向任何您想要的操作。
  • 嗨,马克,就像我们有一个名为类别、活动等的控制器一样,我希望所有控制器都可以在它前面使用 /admin 访问,除了牛顿建议的控制器。我现在将前端 index.html 作为布局并在 MainController 中使用它。所以除了 /main 之外的所有东西都应该得到一个 URL /admin/controllername。有什么建议吗?
  • 我认为你在这里混淆了很多东西。请改用“管理员”路由。有关详细信息,请参阅文档。

标签: php .htaccess cakephp


【解决方案1】:

我认为你不能直接从路由配置中路由,因为它是为 MVC 设计的。

使用清晰的 MVC 代码执行此操作,请按照以下步骤操作。

在 /Controller/MainController 中创建一个 MainController

<?php
class MainController extends AppController {
    public function index(){
        $this->redirect('/frontend/index.html');
    }
}
?>

更改/Config/route.php,找到默认路由规则,替换为:

Router::connect('/', array('controller' => 'main', 'action' => 'index'));

比,享受!

【讨论】:

  • 这是一个很好的解决方法,只是太糟糕了,用户会在地址栏中看到 /frontend
  • 我现在将您的回答与 Mark 的建议结合起来。只希望除 /main 之外的所有其他控制器都可以在其前面使用 /admin 进行访问。这里有什么建议吗?
  • 因此,您可以简单地创建 /View/Main/index.ctp 并将 index.html 的内容放置到该视图中。这样,当访问您的网站时,所显示的内容将是这样的,而不是像普通 http 服务器中的索引页那样的 URL 中的任何东西。
猜你喜欢
  • 2011-11-02
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
  • 1970-01-01
  • 2021-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多