Mod_rewrite con più variabili
-
25-09-2019 - |
Domanda
sto usando uno script PHP che genera dinamicamente PNG trasparenti da utilizzare come sfondi CSS da una stringa di query che prende valori RGBA e HSLA. Lo script originale si trova qui , ho solo aggiunto il supporto HSLA.
A causa di fondo URL con PHP stringhe di query non sono molto carina, e perché sembra di rompere il IE 6 trasparente mod PNG, ho pensato di utilizzare mod_rewrite per consentire lo script per essere chiamato quando un .png con questa sintassi si chiama :
/assets/colors/h[0-360 value]_s[0-100 value]_l[0-100 value]_a[0-100 value].png
che verrebbe riscritto per:
/assets/colors.php?h=[0-360 value]&s=[0-100 value]&l=[0-100 value]&a=[0-100 value]
Ecco le questioni che sto incontrando:
- Il passaggio di molteplici variabili con mod_rewrite
- utilizzando una sottolineatura come delimitatore
So che questo potrebbe essere fatto facendo passare una sola variabile e poi esplodere nel script PHP, però preferirei che sia fatto da Apache.
Grazie in anticipo e se qualcuno vuole il mio HSLA ha permesso la versione dello script basta chiedere. In ogni caso vi consiglio di controllare sul sito web è di autore.
Soluzione
mod_rewrite corrisponderà cose in parentesi (), e poi si può fare riferimento a questi da $ 1, $ 2, ecc nell'ordine in cui sono stati abbinati. Quindi è possibile utilizzare questo per estrarre più variabili, semplicemente inserendoli in parentesi graffe.
Quindi, qualcosa di simile a questo lavoro per voi,
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})
corrisponderà sia a 1, 2 o 3 dei numeri 0-9 in una riga. Quindi, "3", "10" e "100", ecc, ma sarebbe anche corrispondere "999", quindi è necessario assicurarsi che i controlli di file colors.php i valori sono entro i valori attesi, ecc.
Altri suggerimenti
Prova questo:
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]
ho dovuto changeup il mio nome dello script per fare questo lavoro. Perché ho Options MultiViews
, / Attività / colori / è sempre gestito da colors.php indipendentemente dalla configurazione mod_rewrite.