Zend Framework - 导致重写规则问题的图像链接

时间:2012-12-09 20:53:25

标签: php zend-framework mod-rewrite

我有一个问题,我试图通过目标=空白的锚链接在新窗口中显示我的图像文件夹中的图像。

我将重写规则添加到公共文件夹.htaccess中,如帖子Zend keep front controller from blocking image requests中所述,但它仍然给出了如下错误,但无法找出原因。

页面中使用的所有其他图像都显示正常,只有链接的图像为:

<a href="/images/balloon.jpeg" target="_blank">Balloon</a> 

异常消息是

Exception information:

Message: Invalid controller specified (images)
Stack trace:

#0 /home/euphoria/public_html/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#1 /home/euphoria/public_html/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch()
#2 /home/euphoria/public_html/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#3 /home/euphoria/public_html/public/index.php(25): Zend_Application->run()
#4 {main}  

Request Parameters:

array (
'controller' => 'images',
'action' => 'profile_uploads',
'module' => 'default',
)  

我的公用文件夹.htaccess是

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule !\.(js|ico|txt|gif|jpg|png|css)$ index.php
RewriteRule ^.*$ index.php [NC,L]

我的images文件夹中有另一个.htaccess文件,通过使用图像文件停止执行php,其内容是

php_flag engine off

当我将上述.htaccess添加到images文件夹时,Zend尝试重定向到'images'控制器的上述问题才开始出现。

当我删除具有“php_flag引擎关闭”规则的.htaccess时问题消失

图片及其文件夹是CHMOD 777,该网站位于共享主机环境中的自己的域中。 (与子域相对)

非常感谢

1 个答案:

答案 0 :(得分:1)

你确定DOCUMENT_ROOT文件夹中有一个文件夹“images”,它包含一个名为“balloon.jpeg”的图像?

第二次重写规则基本上没用。

  1. 它不会检测到您的“jpeg”图像,它只会检测到“jpg”图像。
  2. 只有当第一条规则和所有RewriteCond行无法检测到您请求的资源是服务器上的实际现有文件时,才会达到此规则。
  3. 第三条规则最终将会发生,因为第二条规则未被标记为“评估的最后一条规则”。
  4. 扔掉它。 Zend框架的标准重写是有效的。如果不是你的情况,你做错了,很可能你没有将你的图像放在它所属的位置。