我在/ CIAppScaffolding / public / upload /中有我的图像,并希望动态调整它们的大小。
为此,我使用方法Resize
创建了一个控制器index
,用于调整大小。
public function index($location = '', $size = '', $image = '') {
//Resizing code here
}
现在,为了仅重写对不存在的图像的请求,我编写了以下重写规则,这些规则似乎从CIAppScaffolding
取出PATH_TRANSLATED
,我得到了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';
答案 0 :(得分:0)
我尝试使用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本身解释&#34; [PATH_TRANSLATED]&#34;所有规则都正常工作。以不同的方式或覆盖我们的htaccess规则,因此它会抛出404错误。
我们需要了解CI如何处理这类请求。仍在调试我们缺乏的地方。
如果您找到任何成功,请告诉我。