现有控制器上的CakePHP 404

时间:2010-08-31 02:50:07

标签: php cakephp http-status-code-404

(我真的希望我在发布此内容之前在google和搜索栏上投入足够的尽职调查)

我开始使用CakePHP并创建了我的第一个模型,控制器和视图。

当我浏览http://localhost/~me/MyApp/Lists时,我得到了404,我不知道为什么

这是我的控制器

<?php
    class ListsController extends AppController 
    {    
        var $name = 'Lists';

        function index()
        {
            $this->set('lists', $this->List->find('all'));
        }
    }
?>

我认为这是一个.htaccess问题但是当我浏览http://localhost/~me/MyApp/apphttp://localhost/~me/MyApp/index时,我会收到一个“Missing Controller”错误页面。当然,这两个URL都指向实际的文件或目录。

谁能告诉我为什么我会在控制器上获得这个404?

下面留下几条评论的更新(请参阅Leo的回答)

应用程序根

的我的.htacces
<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>

我的CakePHP webroot的.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

4 个答案:

答案 0 :(得分:1)

我认为问题出在/ ~me /。尝试至少在http://localhost/MyApp

上移动您的项目

我记得很久以前我们遇到过这样的问题。可以修复它,但是肯定你不会在生产服务器中留下带有这样的URL的网站,所以只需更改网址:)

答案 1 :(得分:1)

查看app/webroot/index.php并确保正确定义了根,应用和核心路径。

尝试的另一件事(虽然我怀疑这是你的问题)是将RewriteBase /~me添加到你的所有htaccess文件中(你网站的根目录中有一个,app目录中的一个,以及webroot目录中的一个。)

答案 2 :(得分:0)

您的网址应为http://localhost/~me/MyApp/lists,并且'list'为小写。并且网址http://localhost/~me/MyApp/apphttp://localhost/~me/MyApp/index会让您丢失控制器页面,因为如果您使用.htaccess,则所有请求都将由app / webroot / index.php处理。

答案 3 :(得分:0)

让我觉得你没有mod_rewrite正常工作。 创建一个仅包含以下内容的phpinfo.php文件:

<?php echo phpinfo() ?>

将其放入webroot,然后以http://localhost/~me/MyApp/phpinfo.php

的形式访问它

在浏览器中执行ctrl-f并搜索“重写”。如果它不存在,则表示没有设置。