我刚刚开始学习cakephp并且除了路由之外已经让Blog示例工作了,在阅读了许多关于路由的文档(包括路由中的文档)后,我仍然不太确定它是如何工作的官方食谱)。
我的问题是'/'根路由,我希望它转到PostsController的index()函数,所以我使用:
Router::connect ('/', array('controller'=>'posts', 'action'=>'index'));
但如果我转到网址,这不起作用: localhost /
这可能(最明确)因为我不知道把cake_1_3文件夹/安装放在哪里,目前我的localhost目录树(在htdocs中)看起来如下:
-htdocs>帖子> cake_1_3
这意味着当我导航到: localhost / 时,我什么也得不到,当我导航到: localhost / posts / 我什么都没得到,只是目录列表中的文件夹“posts”显示我有目录“cake_1_3”。
只有当我转到网址时: localhost / posts / cake_1_3 / posts / 路由工作正常,因为它会看到第二个“帖子”,因此运行“索引”功能“PostsController”。
显然这不是我想要的,我希望能够去: localhost / posts / ,它使用PostsController的索引功能。
更新:我实际上尝试将所有cakephp内容从“cake_1_3”中删除,然后进入“帖子”但是我必须去: localhost / posts / posts / 以便它使用PostsController的index()函数。
有什么方法可以导航到 localhost / posts / ,我会得到PostsController的index()函数吗?
我知道这可能是一个非常简单的问题而且我只是因为我太累了而感到遗憾(不管怎样,这是我的借口),但我现在已经搜索了大约3个小时但不介意伸出援助之手。
感谢您的时间,
InfinitiFizz
P.S。我刚刚意识到我可以将所有cakephp安装文件/文件夹转储到根目录(htdocs),然后 localhost / posts / 可以工作,但我在自己的文件夹中有很多不同的测试网站在htdocs /所以我宁愿在自己的文件夹中测试这些帖子,也没有把所有的cakephp文件夹与所有其他网站的文件夹混在一起。
答案 0 :(得分: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将进行路由。蛋糕路线Router::connect('/', …)
对应于网址http://localhost/mycakeapp/
。所有Cake路线都相对于应用安装路径 。 Cake路由是app-internal路由,它与绝对URL不对应。
如果您希望http://localhost/
成为您的Cake应用,那么Cake将需要成为/htdocs/
中唯一的应用。您不能在根目录中拥有多个应用,但其中任何一个都是“根应用”†‡。
对于本地开发目的,这应该是完全正常的。将应用程序上传到具有真实域的真实服务器时,您通常会将其作为唯一的应用程序。
†你可以,具有精心的重写规则,虚拟主机配置或将文件放在Cake的/app/webroot/
文件夹中。通常比它的价值更麻烦,保持你的项目分开
‡你不能吃蛋糕也吃。 诚