Frage

Ich bin ein PHP-Skript, das dynamisch transparente PNGs für die Verwendung als CSS Hintergründe aus einer Abfrage-String generiert, die RGBa und HSLA Werte annimmt. Das ursprüngliche Skript kann hier werden, ich habe nur hinzugefügt HSLA Unterstützung.

Weil Hintergrund URLs mit PHP Query-Strings sind nicht sehr hübsch, und weil es den IE 6 transparenten PNG-Hack zu brechen scheint, dachte ich an mod_rewrite dem Skript zu ermöglichen aufgerufen werden, wenn ein .png mit dieser Syntax aufgerufen wird :

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

, die neu geschrieben werden würde:

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

Hier sind die Fragen, die ich bin zu begegnen:

  • mehr Variablen mit mod_rewrite vorbei
  • mit einem Unterstrich als Trennzeichen

Ich weiß, das, indem man eine einzelne Variable getan werden könnte und es dann in dem PHP-Skript explodiert, aber ich würde es vorziehen, es von Apache zu tun.

Vielen Dank im Voraus und wenn jemand meine HSLA will Version des Skripts aktiviert einfach fragen. Ich empfehle Ihnen, es auf jeden Fall überprüfen auf ihr Autor der Website.

War es hilfreich?

Lösung

mod_rewrite werden die Dinge in Klammern () entsprechen, und dann können Sie diese als $ 1, $ 2 beziehen, usw. in der Reihenfolge, wie sie abgestimmt wurden. So können Sie dies nur durch mehrere Variablen extrahieren können sie in geschweifte Klammern setzen.

So etwas wie dies für Sie arbeiten,

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}) wird übereinstimmen entweder 1, 2 oder 3 der Zahlen 0-9 in einer Reihe. So „3“, „10“ und „100“, etc. Aber es wäre auch „999“ entsprechen, so dass Sie sicher, dass die Werte, die colors.php Datei vornehmen müssen werden Kontrollen innerhalb erwarteter Bereiche, etc.

Andere Tipps

Versuchen Sie diese:

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]

Ich hatte meinen Skript Namen changeup diese Arbeit zu machen. Weil ich Options MultiViews habe, / assets / Farben / wird immer von colors.php behandelt, unabhängig von der mod_rewrite Konfiguration.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top