2017-04-16 35 views
3

我在/ CIAppScaffolding/public/upload /中有我的图像,并且希望将它们的大小重新调整为一些固定的大小。将不存在图像的请求重写为调整控制器大小

为此,我做了一个控制器Resize与方法index做调整大小。

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

现在,改写为图像不存在唯一的请求,我写了下面的重写规则,这似乎是从PATH_TRANSLATED取出CIAppScaffolding,我也得到一个404(由笨)。

<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

我试着用笨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> 

writen下面的代码我打印服务器变量后发现了什么:

[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 

除笨本身的所有规则都工作正常以不同的方式解释“[PATH_TRANSLATED]”或覆盖我们的htaccess规则,因此会引发404错误。

我们需要了解CI如何处理这些请求。仍然在调试我们缺乏的地方。

让我知道你是否找到任何成功。