根据:
.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 {
}
有什么猜测让这个有用吗?感谢。
答案 0 :(得分:0)
您的规则不会更改CakePHP查找的任何服务器变量以匹配其路由(PATH_INFO
,REQUEST_URI
,SCRIPT_NAME
,HTTP_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中,我有一个代码来显示真实的图像并运行一些代码到这个函数中。