【问题标题】:Zend Framework, htaccess cannot read the new controllerZend 框架,htaccess 无法读取新的控制器
【发布时间】:2012-12-25 09:28:39
【问题描述】:

我的问题是。

我的应用程序有一个图像文件夹,并且在 zend 框架中具有裁剪技术,因此当请求裁剪的图像并且之前找到它时,htaccess 将通过调用裁剪模型来处理图像

the file requested   is : http://localhost/cmstest/public/contents/userdata/images/100X100/163.png

但服务器无法读取正确的控制器

在这里访问代码

    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',
)  

请帮帮我:(

【问题讨论】:

  • 如何创建到控制器的链接?
  • RewriteRule ^(.*)/(.*) ../../index/index/app/storage/image/$2/crop/$1 [QSA,L] 这是控制器的链接
  • 在 PHP 或 HTML 中如何创建链接?
  • php 或 html 是什么意思???我的问题是当我复制图像链接并将其粘贴到地址栏中时,我想查看调整大小的图像,如果以前没有调整大小,服务器必须请求 IndexController 和 indexAction,但服务器不能将文件夹“内容”作为控制器并忽略了 htaccess 文件中的索引控制器!
  • 如果你的 apache 没有看到 .htaccess 文件。它应该在 apache 配置“AllowOverride All”中的某个位置。我的配置文件路径是 /etc/apache2/sites-enabled/000-default (如果是 AllowOverride None,请更正)

标签: zend-framework


【解决方案1】:

你有一个 module/frontend/Controller/contentsController.php 吗? 在这个文件中还有一个 userdataAction 方法?

需要更多信息来帮助您更轻松。

【讨论】:

  • 没有“内容”只是公共文件的文件夹,我需要的是!当找不到文件夹“100x100”或文件163.png时,我需要请求IndexConroller,文件结构是--index.php --contents ----images -----src
【解决方案2】:

如果您的要求是要发生某些事情 - 调用特定的控制器/操作 - 仅在找不到 url 时,那么实现该功能的一种方法是在您的 ErrorController::errorAction() 中执行检查并转发到控制器/执行所需处理的操作。

具体来说:

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

  2. 1234563
  3. 如果是这样,则执行$this-&gt;_forward('resize', 'index'),以便您的调整大小例程可以执行调整大小,保存调整大小的图像(因此下次无需调整大小即可提供),然后发送现在-调整大小的图像(带有正确的图像标题)。

【讨论】:

    【解决方案3】:

    您的重写规则永远不会匹配请求的 url: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]
    

    希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-07
      • 2012-06-24
      • 1970-01-01
      • 2012-04-22
      • 2013-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多