Çok değişkenli mod_rewrite

2 Cevap php

Ben dinamik RGBA ve HSLA değerleri alır bir sorgu dizesi CSS arka plan olarak kullanmak için saydam PNG üreten bir PHP komut dosyası kullanıyorum. Özgün senaryo here, ben sadece HSLA desteği ekledik bulunabilir.

PHP sorgu dizeleri ile arka plan URL'ler çok güzel değildir, ve IE 6 saydam PNG kesmek kırmak gibi görünüyor, çünkü, ben bir bu sözdizimi ile png çağrıldığında komut çağrılacak izin mod_rewrite kullanarak düşündüm çünkü.:

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

: için yeniden edileceği

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

İşte karşılaşma ediyorum konular bulunuyor:

  • mod_rewrite ile birden fazla değişkene
  • sınırlayıcı olarak bir alt çizgi kullanarak

Ben bu tek bir değişken geçen ve daha sonra PHP komut dosyası içinde patlayan tarafından yapılabilir biliyorum, ancak ben Apache tarafından yapılması tercih ediyorum.

Şimdiden teşekkürler ve herkes istiyorsa komut benim HSLA etkin sürümü sadece isteyin. Neyse ben bunu en yazarın web sitesinde göz atmanızı öneririz.

2 Cevap

mod_rewrite) (parantez şeyler maç olacak ve o zaman onlar eşleştirilmiş sırayla vb $ 1, $ 2, olarak bu başvurabilirsiniz. Yani sadece parantez içine yerleştirerek birden çok değişken ayıklamak için kullanabilirsiniz.

Yani böyle bir şey, sizin için çalışacak

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}) sayılar arka arkaya 0-9 1, 2 veya 3 ya eşleşir. Yani "3", "10" ve "100", vb colors.php dosya değerleri denetler emin olmak gerekir Ama o da, "999" maç beklediğini aralıkları, vb içindedir

Bu deneyin:

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]

Ben bu işi yapmak benim betik adını changeup vardı. I Options MultiViews, / varlık / renk / her ne olursa olsun mod_rewrite yapılandırma colors.php tarafından ele alınır çünkü.