Pergunta

Eu estou usando um script PHP que gera dinamicamente PNGs transparentes para usar como CSS fundos a partir de uma seqüência de caracteres de consulta que leva RGBa e HSLa valores.O script original pode ser encontrado aqui, Eu só adicionados HSLa de suporte.

Porque o plano de fundo URLs com PHP cadeias de caracteres de consulta não é muito bonita, e porque parece quebrar o IE 6 PNG transparente hack, eu pensei que o uso do mod_rewrite para permitir que o script para ser chamado quando uma .png com esta sintaxe é chamado de :

/assets/colors/h[0-360 value]_s[0-100 value]_l[0-100 value]_a[0-100 value].png

o que poderia ser reescrito para :

/assets/colors.php?h=[0-360 value]&s=[0-100 value]&l=[0-100 value]&a=[0-100 value]

Veja aqui os problemas que eu estou encontrando :

  • passar várias variáveis com o mod_rewrite
  • usando um carácter de sublinhado como um delimitador

Eu sei que isso pode ser feito, passando de uma única variável e, em seguida, explodir-lo no script PHP, no entanto eu preferiria ser feita pelo Apache.

Obrigado antecipadamente e se alguém quiser minha HSLa habilitado versão do script é só pedir.De qualquer maneira, eu recomendo que você confira no site do autor.

Foi útil?

Solução

mod_rewrite irá corresponder as coisas em chaves () e, em seguida, você pode referir-se a estes como $1, $2, etc., na ordem em que foram correspondidas.Assim você pode usar para extrair várias variáveis por apenas colocando-os dentro de chavetas.

Então algo como isto irá funcionar para você,

RewriteRule ^assets/colors/h([0-9]{1,3})_s([0-9]{1,3})_l([0-9]{1,3})_a([0-9]{1,3}).png assets/colors.php?h=$1&s=$2&l=$3&a=$4 

([0-9]{1,3}) irá corresponder a 1, 2 ou 3 dos números de 0 a 9 em uma linha.Assim, "3", "10" e "100", etc.Mas também teria de corresponder "999", de modo que você precisará certifique-se de que o colors.php arquivo verifica os valores estão dentro dos limites previstos, etc.

Outras dicas

Tente isso:

RewriteEngine on
RewriteRule /assets/colors/h([0-9]+)_s([0-9]+)_l([0-9]+)_a([0-9]+).png /assets/col.php?h=$1&s=$2&l=$3&a=$4 [QSA,L]

Eu tinha que changeup meu nome do script para fazer este trabalho.Porque eu tenho Options MultiViews, /assets/cores/ é sempre tratadas pelo colors.php independentemente do mod_rewrite de configuração.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top