0

我刚刚开始学习 cakephp,除了路由之外,我已经让博客示例工作了,在阅读了很多关于路由的文档(包括官方食谱中的文档)之后,我仍然不太确定它是如何工作的。

我的问题是“/”根路由,我希望它转到 PostsController 的 index() 函数,所以我使用:

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

但是,如果我转到 url: localhost/这不起作用

这可能是(最明确的)因为我不知道将 cake_1_3 文件夹/安装放在哪里,目前我的 localhost 目录树(在 htdocs 中)如下所示:

-htdocs>帖子>cake_1_3

这意味着当我导航到:localhost/时,我什么也得不到,当我导航到:localhost/posts/时,我什么也得不到,只有文件夹“posts”的目录列表显示我有目录“cake_1_3”。

只有当我转到 url:localhost/posts/cake_1_3/posts/时,路由才会起作用,因为它看到第二个“posts”,因此运行“PostsController”的“index”功能。

显然这不是我想要的,我希望能够访问:localhost/posts/,它使用 PostsController 的索引功能。

更新:我实际上尝试将所有 cakephp 内容从“cake_1_3”中取出并放入“posts”,但随后我必须转到:localhost/posts/posts/才能使用 PostsController 的 index() 函数。

有什么方法可以导航到localhost/posts/并让 PostsController 的 index() 函数运行?

我知道这可能是一个非常简单的问题,我只是错过了一些东西,因为我太累了(无论如何这是我的借口),但我已经搜索了大约 3 个小时,不介意伸出援助之手.

谢谢你的时间,

英菲尼迪菲兹

PS 我刚刚意识到我可以将所有 cakephp 安装文件/文件夹转储到根目录(htdocs),然后localhost/posts/就可以了,但是我在 htdocs/ 自己的文件夹中有很多不同的测试网站,所以我'宁愿在它自己的文件夹中测试这篇文章,不要让所有 cakephp 文件夹与所有其他网站的文件夹混合在一起。

4

1 回答 1

2

为了清楚我们正在谈论的目录,Cake 安装带有以下文件夹:

/
  app/
    webroot/
  cake

您必须/使用浏览器访问顶级目录才能获得 Cake 的响应。所有路由都相对于该顶级/目录。

假设您已经在 Web 服务器中安装了 Cake,如下所示:

/
  htdocs/
    someotherproject/
    mycakeapp/
      app/
        webroot/
      cake/

htdocs目录是您的 Web 服务器的根目录。如果您访问http://localhost/,您的网络服务器将响应/htdocs/. 它甚至没有调用 Cake,所以 Cake 不能路由任何东西。

您必须打开http://localhost/mycakeapp/才能调用 Cake。从那里,Cake 将进行路由。Cake 路由Router::connect('/', …)对应于 URL http://localhost/mycakeapp/。所有 Cake 路由都是相对于应用程序安装路径的。Cake 路由是应用程序内部的路由,它不对应绝对 URL。

如果您想http://localhost/成为您的 Cake 应用程序,Cake 将需要成为/htdocs/. 您不能在根目录中拥有多个应用程序,但其中任何一个都是“根应用程序”†‡。

出于本地发展的目的,这应该很好。将应用程序上传到具有真实域的真实服务器时,您通常会将其设为唯一的应用程序。


† 你可以,通过详细的重写规则、虚拟主机配置或将文件放在 Cake 的/app/webroot/文件夹中。不过,通常麻烦多于其价值,请将您的项目分开。
‡ 你不能一边吃蛋糕一边吃。

于 2010-07-28T23:53:33.917 回答