Apache: Impostare un header basato su una condizione di rewrite
Apache offre una varietà di configurazioni grazie all’uso di Rewrite. Se avere creato un sito web, sicuramente avrete fatto ricorso a regole di rewrite.
Ad esempio, se volessimo che richiamando l’url /logout venga passato il parametro op=logout al file index.php basterebbe creare la seguente regola di rewrite:
1 2 |
RewriteCond %{REQUEST_URI} /logout RewriteRule logout$ index.php?op=logout [L] |
Sempre tramite Apache è possibile impostare una serie di header, ad esempio il cache-control per la gestione della durata della cache delle varie risorse. Ipotizziamo di voler indicare ad apache di rispondere alle richieste con useragent googlebot o bingbot dove il referer è google che la cache non esiste, è possibile farlo con queste righe:
1 2 3 4 5 6 |
RewriteCond %{HTTP_USER_AGENT} !(googlebot|bingbot) [NC] RewriteCond %{HTTP_REFERER} google [NC] RewriteRule ^.*$ - [ENV=LONGCACHE:true] Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" env=LONGCACHE Header set Pragma "no-cache" env=LONGCACHE Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT" env=LONGCACHE |
Abbiamo così creato un header condizionale.
Se usate una versione di apache>2.4.10 e dovete impostare un solo header, è possibile anche fare tutto con una riga, usando un ap_expr:
1 |
Header set Pragma "no-cache" "expr=%{HTTP_USER_AGENT}=~/(googlebot|bingbot)/i && %{HTTP_REFERER}=~/google/i" |
Se ad esempio volessi disabilitare la direttiva Strict-Transport-Security nel caso in cui venga richiamato il dominio senza il prefisso www, potrei usare questa direttiva:
1 |
Header always unset Strict-Transport-Security "expr=! %{HTTP_HOST} =~ /^www./" |
Oppure una versione leggermente più estesa, utile nel caso si vogliano impostare più header:
1 2 3 |
<If "! %{HTTP_HOST} =~ /^www./> Header always unset Strict-Transport-Security </If> |
enjoy!
Ti interessa acquistare un dominio a prezzi ultraconvenienti? clicca qui
Se hai trovato utili le informazioni su questo blog,
Fai una donazione!
Clicca sul bottone qui sotto o almeno clicca sul banner pubblicitario 🙂
Commenta