O que há de errado com essa reconfiguração do Apache?

1

Eu tenho um conjunto de reescritas que deve capturar qualquer pedido de /cache/images/* que não exista no sistema de arquivos e retornar uma imagem genérica de acordo com um sufixo (um * _1.jpg correspondente para solicitações de ativos como /cache/images/foo_1.jpg que não existem).

O bloco de código abaixo funciona na maioria dos casos, mas também corresponde a todas as solicitações que terminam em 1.jpg , 2.jpg ou 3.jpg , de modo que "domain.com/1.jpg" também está retornando o /images/generic_1.jpg imagem genérica.

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule . - [L]

RewriteCond %{REQUEST_URI} ^/cache/images/.*$ [NC]
RewriteRule .*1.jpg /images/generic_1.jpg [L]
RewriteRule .*2.jpg /images/generic_2.jpg [L]
RewriteRule .*3.jpg /images/generic_3.jpg [L]

Se eu copiar o segundo RewriteCond na frente do 2.jpg e 3.jpg RewriteRule s, ele funciona como planejado, mas eu gostaria de fazer isso corretamente e ter o RewriteCond aplicado aos três RewriteRule s abaixo dela. O que estou fazendo errado?

    
por editor 29.02.2012 / 19:27

1 resposta

1

[L] - significa a última regra a avaliar: link (-: Can você tira daqui ...?

Editar 1 - Limpar as regras:

Se seus arquivos são nomeados nesse padrão, você poderia fazer algo assim:

RewriteRule .*(\d{1,}).jpg /images/generic_$1.jpg

\d{1,} - corresponde a um dígito de 1 dígito ou maior; Coloque isso em um par de " () " significa "salve a string combinada em $1 " (também conhecida como primeira correspondência), que você pode usar no caminho de destino.

    
por 29.02.2012 / 19:45