php - 将对不存在图像的请求重写到调整大小 Controller

标签 php .htaccess codeigniter mod-rewrite codeigniter-3

我在/CIAppScaffolding/public/upload/中有我的图像,并希望即时将它们调整为一些固定大小。

为此,我制作了一个 Controller Resize,方法是 index 来调整大小。

public function index($location = '', $size = '', $image = '') {
    //Resizing code here
}

现在,为了仅重写对不存在的图像的请求,我编写了以下重写规则,这些规则似乎从 PATH_TRANSLATED 中删除了 CIAppScaffolding,然后我得到404(通过 Codeigniter)。

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /CIAppScaffolding/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^public/upload/([a-z]+)/(large|catalog|thumb)/([^/]+\.(?:jpg|png|jpeg))$ index.php/resize/index/$1/$2/$3 [L]

RewriteCond $1 !^(index\.php|public|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

</IfModule>

编辑:
现在,我采用了以下可行的方法,但这也应该只使用 .htaccess 重写规则。

$route['^public/upload/([a-z]+)/(large|catalog|thumb|banner)/([^/]+\.(?:jpg|png|jpeg))$'] = 'resize/index/$1/$2/$3';

最佳答案

我尝试在 Codeigniter 3 中使用以下在 htaccess 中编写的代码

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /ci-admin/

RewriteCond %{DOCUMENT_ROOT}/ci-admin/assets/uploads/%{REQUEST_FILENAME} !-f
RewriteRule ^assets/uploads/(large|catalog|AdminUser)/([^/]+\.jpg|\.png|\.jpeg)$ index.php/resize/index/$1/$2 [L]

RewriteCond $1 !^(index\.php|assets|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
</IfModule>

打印服务器变量后我发现了什么:

[REQUEST_URI] => /ci-admin/assets/uploads/AdminUser/IMG_20140623_2047229.jpg
[SCRIPT_NAME] => /ci-admin/index.php
[PATH_INFO] => /resize/index/AdminUser/IMG_20140623_2047229.jpg
[PATH_TRANSLATED] => D:\wamp\www\resize\index\AdminUser\IMG_20140623_2047229.jpg
[PHP_SELF] => /ci-admin/index.php/resize/index/AdminUser/IMG_20140623_2047229.jpg

除了 CodeIgniter 本身以不同方式解释“[PATH_TRANSLATED]”或覆盖我们的 htaccess 规则外,所有规则都工作正常,因此它抛出 404 错误。

我们需要了解 CI 如何处理此类请求。仍在调试我们缺少的地方。

如果您发现任何成功,请告诉我。

关于php - 将对不存在图像的请求重写到调整大小 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43435452/

相关文章:

php - Laravel 5.3 - 清除共享主机中的配置缓存

php - 使用 PHP/MYSQL 填充 HTML 下拉列表

php - CodeIgniter form_validation->run() 总是返回 false?

javascript - 显示页面其他位置的 JavaScript 隐藏元素

php - 在此服务器上找不到请求的 URL/blog/CodeIgniter_2.2.0/posts/post/5

php - 计算 PHP 警告/通知的数量

php - Wordpress - 自定义帖子类型搞砸了 - 分类不显示

apache - 使用通配符通过 .htaccess 重定向

php - 如何锁定,防止更改上传的文件

.htaccess - 当原始 url 以确定词结束时,使用 htaccess 重定向到其他域