Cakephp /app/webroot/file中缺少ControllerException目录/

Cakephp /app/webroot/file中缺少ControllerException目录/,cakephp,cakephp-2.3,Cakephp,Cakephp 2.3,我在我的error.log中收到以下消息: Request URL: /files/thumbs1/1354046882.jpg Stack Trace: #0 /path/to/web/app/webroot/index.php(92): Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse)) #1 {main} 2013-05-08 13:44:16 Error: [MissingControllerExc

我在我的error.log中收到以下消息:

Request URL: /files/thumbs1/1354046882.jpg
Stack Trace:
#0 /path/to/web/app/webroot/index.php(92):     Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse))
#1 {main}
2013-05-08 13:44:16 Error: [MissingControllerException] Controller class     FilesController could not be found.
Exception Attributes: array (
  'class' => 'FilesController',
  'plugin' => NULL,
)
图像文件/files/thumbs1/1354046882.jpg存在并显示。但除此之外,我在Error.log中得到了错误。 我在view.ctp中手动生成url,如下所示:

<img src="/files/thumbs1/1354046882.jpg" alt="">

我不使用 echo$this->Html->image('cake_logo.png',array('alt'=>'CakePHP')

如何添加ControllerException,以便webroot中的目录“文件”不被标识为控制器。我没有文件控制器。 或者“文件”是CakePHP中不应该使用的受保护单词,这有可能吗?到目前为止,无法在手册中找到相关内容

/webroot中的.htaccess

<IfModule mod_rewrite.c>
   RewriteCond %{HTTP_HOST} !www.domainname.com
   RewriteRule (.*)  http://www.domainname.com/$1 [R=301,L]
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

重写cond%{HTTP_HOST}!www.domainname.com
重写规则(.*)http://www.domainname.com/$1[R=301,L]
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^(.*)$index.php[QSA,L]
我更新到CakePHP2.3。
感谢您的帮助。

在.htaccess中添加一条规则,以便以/files/开头的请求URL不会路由到index.php


另一方面,请尽量不要生成指向丢失文件的URL:)

如果我对所有内容都理解正确,那么您唯一的问题就是没有编写正确的URL

我将在这里假设一些事情:您的文件夹的结构类似于

/app
    /Config
    /Console
    ...
    /webroot
        /files
/lib
/plugins
/vendors
你想要的是显示一个位于这个文件目录中的图像,对吗

那你就得确保去。如果你不告诉cake你想在你的webroot中有一个文件,那么使用这种url

files/something/something-else
cake只会想“好的,这条路径是控制器/动作/参数(这是一个概括,显然这个假设可以用修改)”,然后失败,因为文件不是控制器

所以,要解决这个问题,每次您想要指向webroot目录中的某个内容时,都要将其添加到路径中。你的情况应该是这样的

<img src="<?php echo $this->webroot; ?>files/thumbs1/1354046882.jpg" alt="">
webroot;?>文件/thumbs1/1354046882.jpg“alt=”“>

如果文件存在,则应显示无错误。

您如何生成导致该错误的url?您是否可以使用该代码更新问题?我使用代码更新了问题如何生成文件。您是否使用原始的
.htaccess
?或者是否对其进行了修改(例如,将重写设置移动到vhost)?我用.htaccess更新了问题。我在原始问题中添加了一个重写规则,从domain.com变成了www.domain.com。我没有修改任何其他规则。htaccess@mart你在哪里可以解决这个问题?我在webroot/uploads/directory上也遇到了同样的问题。你说文件仍然存在,请求被路由到cakephp。这是不可能的.htaccess中的默认重写规则。如果路径
/files/thumbs1/1354046882.jpg
存在于您的webroot中,并且该文件可由Web服务器读取,则应由Web服务器本身提供服务。谢谢。看起来我在某个地方对重写规则有问题,但我到目前为止找不到。您可以替换您的webroot/.htaccess文件,包含来自新cakephp包的未修改文件。