【问题标题】:Zend Framework - A link to images causing issue with rewrite rulesZend Framework - 导致重写规则问题的图像链接
【发布时间】:2012-11-27 07:42:04
【问题描述】:

我有一个问题,我试图通过 target=blank 的锚链接在新窗口中简单地显示我的图像文件夹中的图像。

我将重写规则添加到公用文件夹 .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]

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

php_flag engine off

Zend 尝试重定向到“图像”控制器的上述问题仅在我将上述 .htaccess 添加到图像文件夹时才开始发生。

当我删除具有“php_flag engine off”规则的 .htaccess 时,问题消失了

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

非常感谢

【问题讨论】:

    标签: php zend-framework mod-rewrite


    【解决方案1】:

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

    第二个重写规则本质上是无用的。

    1. 它不会检测您的“jpeg”图像,它只会检测“jpg”图像。
    2. 只有当第一条规则和所有 RewriteCond 行都无法检测到您请求的资源是服务器上实际存在的文件时,才会达到此规则。
    3. 第三条规则最终还是会发生,因为第二条规则没有被标记为“最后评估的规则”。

    扔掉。 Zend 框架的标准重写工作。如果您的情况不是这样,那么您做错了什么,很可能您没有将图像放在它所属的位置。

    【讨论】:

    • 抱歉,images 文件夹位于 public 文件夹中。即 /public/images
    • 对。我已经删除了该规则,因此我的 htaccess 现在是 Zend Framework 使用的标准。我仍然遇到同样的问题。我可以让它工作的唯一方法是删除 /public/images/profile_uploads/ 文件夹中的 htaccess,其中包含规则“php_flag engine off”。事情是我需要阻止人们使用图像来执行脚本,所以任何关于如何解决这个问题的建议都将不胜感激。塔约翰
    • 输入验证将按顺序进行。检查您的图像。禁止上传带有“php”扩展名的图片。如果您的服务器按照标准配置,则只有这些将作为 PHP 脚本执行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多