(我真的希望我在发布此内容之前在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/app或http://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>
答案 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/app和http://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并搜索“重写”。如果它不存在,则表示没有设置。