我在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中得到错误。 我在视图.ctp中手动生成url如下:
<img src="/files/thumbs1/1354046882.jpg" alt="">
我不用 echo $ this-&gt; Html-&gt; image('cake_logo.png',array('alt'=&gt;'CakePHP'));
如何添加ControllerException,以便webroot中的目录“files”不会被识别为控制器。我没有FilesController。 或者是否可能,“file”是CakePHP中受保护的单词,不应该使用?到目前为止,在CakeBook中找不到相关内容。
/ 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>
我更新到CakePHP 2.3。 谢谢你的帮助。
答案 0 :(得分:0)
在.htaccess中添加规则,以便以/ files /开头的请求网址不会路由到index.php。
在旁注上尽量不要为丢失的文件生成URL:)
答案 1 :(得分:0)
如果我理解了一切,那么你唯一的问题就是没有写出正确的网址。
我将在这里假设一些事情:你的文件夹的结构类似于
/app
/Config
/Console
...
/webroot
/files
/lib
/plugins
/vendors
你想要的是显示位于这个文件目录中的图像,对吗?
然后你需要确保get your paths right。如果你没有告诉蛋糕你想要webroot中的文件,那么使用这种类型的URL
files/something/something-else
蛋糕只是想“好吧,这条路径是控制器/动作/参数(这是一个概括,显然这个假设可以用routing修改”),并且失败因为文件不是控制器。
因此,要解决此问题,每次要指向webroot目录中的某些内容时,请将其添加到路径中。在你的情况下它应该是
<img src="<?php echo $this->webroot; ?>files/thumbs1/1354046882.jpg" alt="">
如果文件存在,则应该显示没有错误。