Zend Framework,htaccess无法读取新的控制器

时间:2012-12-25 09:28:39

标签: zend-framework

我的问题是。

我的应用程序有一个图像文件夹,以及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',
)  

请帮帮我:(

3 个答案:

答案 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()中执行检查并转发到执行所需处理的控制器/操作。

具体做法是:

  1. ErrorController::errorAction()中,检查导致您的错误是否有404错误。

  2. 如果是这样,请检查(可能是preg_match()上的$request->getRequestUri())所请求的网址是您希望使用调整大小例程(IndexController::resizeAction()或喜欢)。

  3. 如果是这样,那么执行一个$this->_forward('resize', 'index'),这样你的调整大小例程就可以执行调整大小,保存调整大小的图像(所以它将在下次提供,而不需要调整大小),并发送现已调整大小的图像(包含正确的图像标题)。