我的问题是。
我的应用程序有一个图像文件夹,以及zend框架中的裁剪技术,所以当我们之前发现请求的图像时,htaccess会通过调用裁剪模型处理图像
the file requested is : http://localhost/cmstest/public/contents/userdata/images/100X100/163.png
但服务器无法读取正确的控制器
htacces code here
Options +FollowSymLinks +ExecCGI
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/(.*) ../../index/index/app/storage/image/$2/crop/$1 [QSA,L]
</IfModule>
显示的错误是
An error occurred
Page not found
Exception information:
Message: Invalid controller specified (contents)
Stack trace:
#0 /Applications/XAMPP/xamppfiles/htdocs/zend/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#1 /Applications/XAMPP/xamppfiles/htdocs/zend/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch()
#2 /Applications/XAMPP/xamppfiles/htdocs/zend/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#3 /Applications/XAMPP/xamppfiles/htdocs/cmstest/public/index.php(36): Zend_Application->run()
#4 {main}
Request Parameters:
array (
'controller' => 'contents',
'action' => 'userdata',
'images' => '100X100',
'module' => 'frontend',
)
请帮帮我:(
答案 0 :(得分:0)
你有模块/前端/ Controller / contentsController.php吗? 并在此文件中的userdataAction方法?
需要更多信息来帮助您更轻松。
答案 1 :(得分:0)
您的重写规则永远不会与您要求的网址匹配:localhost / cmstest / public / contents / userdata / images / 100X100 / 163.png
有了这个规则: ^()/(。), 你写的是所请求的url以^字符跟随斜线和其他字符的东西开始。
此处,您的URI是public / contents / userdata / images / 100X100 / 163.png。所以它永远不会像你期望的那样匹配。
尝试类似:
RewriteRule ^public/contents/userdata/images/(.*)/(.*) ../../index/index/app/storage/image/$2/crop/$1 [QSA,L]
希望对你有所帮助。
答案 2 :(得分:0)
如果你的要求是要发生的事情 - 一个特定的控制器/动作被调用 - 只有在找不到网址时,那么实现这一点的一种方法是在ErrorController::errorAction()
中执行检查并转发到执行所需处理的控制器/操作。
具体做法是:
在ErrorController::errorAction()
中,检查导致您的错误是否有404错误。
如果是这样,请检查(可能是preg_match()
上的$request->getRequestUri()
)所请求的网址是您希望使用调整大小例程(IndexController::resizeAction()
或喜欢)。
如果是这样,那么执行一个$this->_forward('resize', 'index')
,这样你的调整大小例程就可以执行调整大小,保存调整大小的图像(所以它将在下次提供,而不需要调整大小),并发送现已调整大小的图像(包含正确的图像标题)。