regra mod_rewrite para imagens com string de consulta

1

Sou um novato mod_rewrite e um noob regex, mas aqui está o que eu quero fazer:

Eu tenho um script que redimensionará as imagens na hora. Gostaria de poder usar qualquer caminho de arquivo de imagem, adicionar uma string de consulta a ele e enviá-lo automaticamente para o script a ser processado.

Então, algo como:

from: http://mysite.com/images/logo.jpg?w=100&h=50 
to:   http://mysite.com/images/thumbs/phpThumb.php?src=logo.jpg&w=100&h=50

É claro que, se nenhuma string de consulta for especificada, ela deve apontar apenas para o arquivo original.

Usando o arquivo .htaccess no / images, eu tenho isso. Mas isso não funciona de todo. Ou, na melhor das hipóteses, quebra todas as imagens dos meus sites:

 <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{QUERY_STRING} ^.*
    RewriteRule ([^\s]+(\.(?i)(jpg|png|gif|bmp))$) /thumbs/phpThumb.php?src=$1 [L,QSA]
 </IfModule>
    
por Bryan M. 23.07.2010 / 20:34

1 resposta

1

Primeiro adicione um RewriteBase , isso removerá a parte /images/ na string de consulta. Você receberá photo.jpg?w=... em vez de /images/photo.jpg?w=... .

Segundo adicione /images/ ao redirecionamento, porque seu redirecionamento atual diz para ir para http://mysite.com/thumbs/phpThumbs... em vez de http://mysite.com/images/thumbs/phpThumbs... .

Isso dá algo assim:

 <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /images/
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{QUERY_STRING} ^.+
    RewriteRule ([^\s]+(\.(?i)(jpg|png|gif|bmp))$) /images/thumbs/phpThumb.php?src=$1 [L,QSA]
 </IfModule>
    
por 23.07.2010 / 21:51