Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

i have a script that uploads images, creates a hash for it, creates 3 directories, and stores the image to

imgs/f3s/v5g/234/536_f3sv5g2344270fd093ee8a9bf8de3de32dad.jpg

(the “536_” is the user id)

so im trying to turn

imgs/f3s/v5g/234/536_f3sv5g2344270fd093ee8a9bf8de3de32dad.jpg

into

user_pics/536/536_f3sv5g2344270fd093ee8a9bf8de3de32dad.jpg

how can i do that? i want that if someone wants to view the photo, they see the new directory in the url, not the one with 3 sub directories.

EDIT

So jon's method works but but i need to add RewriteRule .* index.php/$1 [PT,L] to my htaccess. when i add that, everything stops working how come?

this is what i currently have so far

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$1 [PT,L]
RewriteRule ^user_pics/([^/]+)/[^]+(.{3})(.{3})(.{3})(.*).(jpe?g|gif|png)$ /imgs/$2/$3/$4/$1_$2$3$4$5.$6 [L]

share|improve this question
    
for "108_" you mean, in the url u gave "536_" ? why do you create all those folders to save the imagen? –  jpganz18 Sep 17 '12 at 21:26
    
sorry fixed :p. and i created them because there will be A LOT (millions) of pictures on this server so they need to be spread evenly –  flyenig Sep 17 '12 at 21:31
    
added edits to this question.... –  flyenig Sep 17 '12 at 22:37

1 Answer 1

up vote 1 down vote accepted

Try:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^user_pics/([^/]+)/[^_]+_(.{3})(.{3})(.{3})(.*)\.(jpe?g|gif|png)$ /imgs/$2/$3/$4/$1_$2$3$4$5.$6 [L]
share|improve this answer
    
thanks but that didnt work –  flyenig Sep 17 '12 at 22:28
    
nvm it worked but there is a problem... i need to have this rule in my htaccess RewriteRule .* index.php/$1 [PT,L] when i take it out it works, but when i put it in it doesnt. why>? –  flyenig Sep 17 '12 at 22:33
    
@flyenig You want to put the redirect rule above any routing rules (e.g. your "route everything to index.php" rule). –  Jon Lin Sep 17 '12 at 22:38
    
ok i put that before the index.php rule and now my whole site gives me a 500 error, what am i doing wrong? –  flyenig Sep 17 '12 at 23:14
    
nvm i got it to work. thanks! –  flyenig Sep 17 '12 at 23:23

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.