我正在尝试将cakephp应用程序部署到我的对等系统中,并且对于所有请求我都会收到404错误。 这不是cakephp 404错误,但是找不到正常的网络服务器404页面错误。 :(。我们都使用MAC OS 10.6。相同的代码在我的机器和生产系统上运行。我跟着在他的机器上部署的步骤。我正在使用cakephp高级安装,即webroot只包含index.php,css,js等.APP文件夹和CAKE文件夹位于其他地方。
主页从AJAX调用中获取数据。当我转到http://localhost时,会呈现layouts / default.ctp中的页眉和页脚内容,但是例如http://localhost/posts/showmyposts的ajax调用会收到404(未找到)错误。如果我转到其他网址,例如http://localhost/users/login,我会收到正常的网络服务器404错误。
未找到
在此服务器上找不到请求的URL / users / login /。
在我的apache错误日志中,我收到错误
[Mon May 16 16:19:48 2011] [错误] [client :: 1]文件不存在:/ Library / WebServer / Documents / users,referer:http://localhost/ 我的cakephp安装是否正确?
答案 0 :(得分:7)
听起来像mod_rewrite
无法在该计算机上运行的问题。当您尝试运行默认的Cake安装时会发生什么?它是否加载CSS和所有?
您的应用目录(以及您的webroot目录)中是否有.htaccess
个文件?
您的Apache配置文件中是否已启用FollowSymLinks
?
答案 1 :(得分:4)
我遇到了同样的问题。
我通过在public_html文件夹中创建.htaccess解决了这个问题,其中包含以下内容:
<IfModule mod_rewrite.c>
RewriteEngine On
#Rewrite CakePHP
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !server-status
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
它对我有用。
答案 2 :(得分:2)
我必须在两个位置修改我的httpd.conf文件(它的位置因Linux安装而异 - 我的位于/etc/httpd/conf/httpd.conf)让它在CentOS上运行。
除了CakePHP文档中提到的<Directory /var/www>
之外,如果你向前走一点,你会看到<Directory "/var/www/html">
不允许重写。
将AllowOverride None
更改为AllowOverride All
。
请务必使用sudo /sbin/service httpd restart
重置apache。
答案 3 :(得分:2)
如果上述解决方案无效,确保启用了apache重写模块
在debian上默认禁用
a2enmod rewrite
service apache2 restart
答案 4 :(得分:1)
在我的情况下,我遇到了所有帖子控制器请求(/ posts / *)都返回404的事实。其他控制器页面工作正常。
原来是因为我的网络根目录中有一个posts.sql文件。我移动文件后,一切正常。即使使用.sql扩展名,Cake的重写规则也会将请求映射到不存在的posts文件夹。