Imposta condizionale scade le intestazioni in Apache Config
-
28-10-2019 - |
Domanda
Vorrei impostare condizionatamente scade le intestazioni sulle immagini in modo che non cacheranno mentre un progetto è in fase di sviluppo ma lo faranno quando è in produzione. Idealmente questa sarebbe solo una modifica del file Apache Conf. Ho uno script Perl che restituirà lo stato del progetto, che può essere utilizzato con mod_rewrite come segue:
rewritemap PSTAT prg:/bin/pstat.pl
...skipping...
rewritecond ${PSTAT:$site:$1} =devel
rewriterule ^/run/$site/p(\d+)/(\w+) /logout.pl/$2 [NS,L]
Sarebbe bello se potessi fare qualcosa di simile:
rewritecond ${PSTAT:$site:$1} =devel
ExpiresByType image/jpg "now plus 1 second"
Anche se ovviamente non funzionerebbe.
C'è qualche soluzione?
Soluzione
Un trucco che ha funzionato per me è impostare prima le intestazioni:
ExpiresByType image/jpg "now plus 1 second"
...
E poi per sconfiggere l'intestazione nel caso in cui siamo in modalità sviluppa:
Header set Cache-control "no-cache" env=devel
Header unset expires env=devel
Ciò richiede che tu abbia un env booleano devel
precedentemente inizializzato in base alla modalità. Nel nostro caso decidiamo il nome host se vogliamo essere sviluppato o meno (devel.domain.com vs. www.domain.com).
Altri suggerimenti
A partire da ciò che Alienhard ha detto che sono riuscito a trovare una risposta al mio problema.
rewritemap PSTAT prg:/bin/pstat.pl
...skipping...
rewritecond ${PSTAT:$site:$1} =devel
rewriterule ^/images/(\d+)/(\w+) - [E=devel:1]
header set cache-control "no-cache" env=devel
header unset expires env=devel
(/images/(\d+)
è la cartella delle immagini per un particolare numero di progetto (\d+)
)
Il E
bandiera di rewriterule
Ti consente di impostare una variabile di ambiente nel caso che la regola corrisponda. -
In realtà non riscrive nulla. Pertanto, questo controlla l'output dello script usando rewritecond
inviandolo il numero di progetto dal rewriterule
, quindi imposta la variabile di ambiente nel caso che entrambe le condizioni corrispondano. Quindi header
Condizionalmente viene impostato in base alla presenza di quella variabile di ambiente.