2017-04-16 12 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如何處理這些請求。仍然在調試我們缺乏的地方。

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

相關問題