cakephp路由问题(或者可能只是混乱)

cakephp路由问题(或者可能只是混乱),php,cakephp,routing,url-routing,cakephp-1.3,Php,Cakephp,Routing,Url Routing,Cakephp 1.3,我刚刚开始学习cakephp,除了路由之外,我还不太确定它是如何工作的,在阅读了很多关于路由的文档(包括官方食谱中的文档)之后 我的问题是“/”根路由,我希望它转到PostsController的index()函数,因此我使用: Router::connect ('/', array('controller'=>'posts', 'action'=>'index')); 但是如果我转到url:localhost/ 这可能(最确切地说)是因为我不知道将cake_1_3文件夹/安装放在

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

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

Router::connect ('/', array('controller'=>'posts', 'action'=>'index'));
但是如果我转到url:localhost/

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

-htdocs>posts>cake\u 1\u 3

这意味着当我导航到:localhost/时,我什么也得不到;当我导航到:localhost/posts/时,我什么也得不到,只有文件夹“posts”的目录列表,它显示我有目录“cake\u 1\u 3”

只有当我转到url:localhost/posts/cake\u 1\u 3/posts/时,才会执行路由工作,因为它看到第二个“posts”,因此运行“PostsController”的“index”功能

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

更新:我实际上试着把所有cakephp内容从“cake_1_3”中去掉,放到“posts”中,但我必须转到:localhost/posts/posts/才能使用PostsController的index()函数

有没有办法导航到localhost/posts/,然后运行PostsController的index()函数

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

谢谢你抽出时间

无限化


另外,我刚刚意识到我可以将所有cakephp安装文件/文件夹转储到根目录(htdocs)中,然后localhost/posts/就可以工作了,但是我在htdocs/中自己的文件夹中有很多不同的测试网站,所以我也希望将此posts测试放在自己的文件夹中,不要将所有cakephp文件夹与所有其他网站的文件夹混在一起。

为了弄清楚我们讨论的目录,这些文件夹附带了一个Cake安装:

/
  app/
    webroot/
  cake
您必须使用浏览器点击顶部的
/
目录才能从Cake获得任何响应。所有路由都与顶部的
/
目录相关

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

/
  htdocs/
    someotherproject/
    mycakeapp/
      app/
        webroot/
      cake/
htdocs
目录是web服务器的根目录。如果您转到
http://localhost/
,您的web服务器将响应
/htdocs/
的内容。它甚至没有调用Cake,所以Cake不能路由任何东西

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

如果您想要
http://localhost/
要成为您的Cake应用程序,Cake必须是驻留在
/htdocs/
中的唯一应用程序。您不能在根目录中有多个应用程序,但其中任何一个应用程序都是“根应用程序”†--

为了当地的发展目的,这应该是非常好的。将应用程序上载到具有真实域的真实服务器时,您通常会使其成为唯一的应用程序


†您可以通过精心制定的重写规则、虚拟主机配置或将文件放在Cake的
/app/webroot/
文件夹中。通常情况下,要把你的项目分开,这会带来更多的麻烦。

你不能既有蛋糕又吃。zing

啊,好吧,我想我当时对“/”是相对的感到困惑,谢谢你的回答,还有那可笑的蛋糕双关语:)事实上,对不起,我这里还有个问题。如果我转到“localhost/posts/”,我会被重定向到“posts/app/webroot”的目录列表,而不是我认为要路由的地方。我使用的路由与问题中给出的相同,根文件夹“/”转到“posts”控制器的index()函数。我原以为这意味着去‘localhost/posts/’会带我去那里,但事实并非如此,只有‘localhost/posts/posts/’会。(根据您的示例,将帖子替换为mywebapp作为文件夹名)。对不起,我刚意识到这个问题。感谢您的时间。这也意味着,当我执行“删除”或“编辑”链接时,我会被重定向到“posts/app/webroot”目录列表,只有当我再次键入“localhost/posts/posts/”时,我才会看到flash()“post已被删除”,因此我的路由问题似乎也会扰乱重定向。重定向代码是“$this->redirect(数组('action'=>'index'));”谢谢,InfinitiFizz@Infiniti那么你的目录结构是什么
/htdocs/posts/
是我示例中的
/htdocs/mycakeapp
吗?然后需要
/posts/posts
。如果您看到的是
app/webroot/
的目录列表,则似乎有一个
.htaccess
文件丢失了。其中有三种,分别位于
/
/app
/app/webroot
中。确保它们在那里。是的,除了mycakeapp=帖子外,其他都一样。我有所有三个.htaccess文件,它们都与我解包cakephp时的默认文件相同。有什么想法吗?还有routes.php问题,当我在“htdocs/posts/”中时,它不会重定向到posts\u控制器的index(),即使“/posts/”是应用程序、蛋糕等文件夹所在的位置。routes.php如下所示:Router::connect('/',array('controller'=>'posts','action'=>'index