.htaccess在cakephp 2.5中重写图像

时间:2018-04-10 20:05:16

标签: php apache .htaccess cakephp cakephp-2.5

根据:

.htaccess rewrite image file to php script

我正在尝试在cakephp 2.5中将图像重写为动作。根据这篇文章,使用的.htaccess是/ app / webroot /中的一个:Adaptive images CakePHP htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    RewriteRule ^img/logo.png$ /users/display_details [NC,L]
</IfModule>

显示的结果是“缺少控制器”页面,带有。

<?php
class ImgController extends AppController {

}

有什么猜测让这个有用吗?感谢。

2 个答案:

答案 0 :(得分:0)

您的规则不会更改CakePHP查找的任何服务器变量以匹配其路由(PATH_INFOREQUEST_URISCRIPT_NAMEHTTP_X_REWRITE_URL),因此CakePHP将仍在/img/logo.png上查看和匹配,它会忽略您的规则设置的REDIRECT_URL,因此会查找ImgController

您可以尝试通过PATH_INFO(信封)标记设置E变量,例如:

RewriteRule ^img/logo.png$ index.php [NC,L,E=PATH_INFO:/users/display_details]

这应该将$_SERVER['PATH_INFO']设置为/users/display_details,而CakePHP应该能够匹配针对它的路线。

另见

答案 1 :(得分:0)

我没有尝试你的解决方案,因为我找到了一种方法让它发挥作用。

进入routes.php我添加了这一行

Router::connect('/images/logo.png', array('controller' => 'users', 'action' => 'display_details'));

这有点奇怪,真实但却有效。真实的图像是/img/logo.png所以在display_details中,我有一个代码来显示真实的图像并运行一些代码到这个函数中。