# Meta tag

I meta tag, o tag meta, sono metadati utilizzabili nell'HTML per veicolare informazioni aggiuntive correlate alla pagina web che ne fa uso. Sono in genere analizzati e utilizzati per mezzo di sistemi automatici (come i browser o i motori di ricerca), che li possono elaborare per fornire servizi o funzionalità specifiche.
A differenza di molti altri tag, i tag meta non forniscono al browser informazioni strettamente legate alla formattazione della pagina, non influendo sulla impaginazione grafica. A meno che non elaborati appositamente, sono generalmente invisibili all'utente, se non attraverso la visualizzazione del codice sorgente della pagina oppure tramite le finestre di proprietà dei browser.
I tag meta, non essendo formalmente codificati, possono essere utilizzati a discrezione del webmaster secondo le proprie necessità. Gli unici elementi richiesti dalla grammatica formale sono l'utilizzo di un attributo "name" e di un attributo "content".

## Origine

La nascita dei tag meta è originariamente dovuta alla necessità di fornire un supporto ai motori di ricerca per una corretta indicizzazione dei siti e delle pagine, quando ancora non esistevano algoritmi avanzati in grado di analizzare il testo della pagina e basarsi su variabili più complesse.
Per motivi di potenza di calcolo e memoria, infatti, i crawler utilizzati dai motori di ricerca si limitavano a raccogliere e analizzare le prime stringhe di testo della pagina. Per questo motivo i webmaster inserivano nelle intestazioni della pagina dei tag appositamente destinati a contenere metadati che riassumessero l'intero contenuto della pagina. Tale aiuto fornito dai webmaster, però, lasciava ampio spazio a comportamenti opportunistici volti a sviare il corretto funzionamento del motore di ricerca, nel tentativo di apparire in un maggior numero di ricerche. Ciò era possibile inserendo fra i metadati informazioni non pertinenti ai contenuti della pagina, ma legati ad altri argomenti di interesse cercati dagli utenti.
Ben presto, però, il superamento delle limitazioni tecniche e la raffinazione degli algoritmi, sempre più sofisticati, permisero di aggirare l'uso improprio dei tag meta, orientando l'analisi delle pagine sui testi, sui contenuti, sul numero di link entranti nel sito, il numero di click ricevuti e numerose altre variabili.
Ciò ha portato al superamento dei tag meta tra gli elementi utili per il posizionamento, sebbene non sia ancora scomparsa la leggenda metropolitana secondo la quale essi possano fornire contributi significativi nei risultati dei motori di ricerca.. Il tag meta "keywords", per esempio, è tra quelli ufficialmente non riconosciuti da Google, che ne analizza altri per scopi tecnici non correlati alla posizione nelle pagine dei risultati.

## Struttura

La struttura dei tag meta è relativamente semplice e duttile, prevedendo due soli attributi:
* l'attributo name indica il tipo di informazione contenuta nel tag
* l'attributo content invece il contenuto della informazione
I primi quindi richiamati da una specifica parola, i secondi invece sono variabili e contestuali al sito o alla pagina cui fanno riferimento. Anche l'attributo name può essere scelto in modo variabile, ma solo quelli più diffusi sono riconosciuti dai sistemi di analisi standardizzati.
Esiste anche un attributo, chiamato http-equiv, che unito all'attributo content fornisce al browser degli header http. Alcuni esempi sono:
Che rispettivamente aggiornano la pagina ogni 5 secondi e forniscono informazioni al browser circa il contenuto e la codifica della pagina.
Non è specificato un tag meta per indicare la data di creazione e ultimo aggiornamento della pagina.

## Metadati per i motori di ricerca
### Description

Il metadato description è destinato a contenere una breve descrizione dei contenuti della pagina. Può essere utilizzato, a discrezione del motore di ricerca, come testo riassuntivo nella pagina dei risultati. Diversamente che agli albori di Internet, non ha effetti sul posizionamento..

### Keywords

Il metadato keywords aveva lo scopo di contenere una serie di parole chiave rappresentative del contenuto della pagina indirizzate prevalentemente ai motori di ricerca per l'individuazione dell'argomento trattato. L'abuso di tali tag decretò la fine del loro utilizzo. Il maggiore motore di ricerca, Google, non lo elenca tra i tag riconosciuti. È tuttavia opinione comune che i motori di ricerca analizzino ancora in modo subordinato tale tag per verificare la presenza di parole fuorvianti non presenti all'interno del testo della pagina, penalizzando tali comportamenti scorretti.
Il contenuto dell'attributo content è quindi una lista di parole. Su come tali termini vadano separati, per esempio con virgole o con spazi, non esistono pareri unanimi. Non tutti i motori considerano le virgole come dei separatori, per questo motivo si adotta spesso la soluzione di usare una virgola seguita da uno spazio.

### Robots

Il tag meta robots è indirizzato esclusivamente agli spider, fornendo due tipologie distinte di direttive: se indicizzare o meno la pagina, o se seguire o meno i collegamenti dalla pagina in questione verso altre; l'attributo content, quindi, contiene determinate variabili:

#### index

    per indicare che la pagina può essere indicizzata.

#### noindex

    per indicare invece di non indicizzare la pagina.
I due tipi di direttive possono essere liberamente abbinati secondo le esigenze del webmaster:
la disposizione è ininfluente, ma non possono contenere indicazioni contrastanti. Se il tag meta "robots" non è inserito, gli spider agiscono di default come se fossero indicati index e follow, la cui combinazione può essere indicata anche con il valore all, così come none deseleziona entrambe le possibilità.
È facoltà del motore di ricerca seguire queste indicazioni, sebbene la netiquette lo preveda.
A questi tag iniziali si aggiungono:

#### follow

    per indicare di seguire i link a altre pagine collegate;

#### nofollow

    per indicare di non seguire le pagine linkate;

#### nosnippet

    per indicare di non mostrare snippet nei risultati di ricerca;

#### noarchive

    per indicare di non salvare una copia della pagina nella memoria cache del motore.

#### date

    per indicare di non indicizzare una pagina a partire da una certa data. Le precedenti indicizzazioni non sono cancellate, e non è disponibile un metatag per impostare una data a partire dalla quale la pagina non è più visibile fra i risultati del motore, e/o nella sua memoria cache.

#### Attributi aggiuntivi per i motori di ricerca
##### NOODP

I motori di ricerca Google, Yahoo! e MSN usano in alcuni casi il titolo e l'abstract dell'elenco DMOZ (aka Open Directory Project) di un sito web per il titolo e/o la descrizione (chiamato anche snippet o abstract) nelle pagine dei risultati dei motori di ricerca (SERP). Per offrire ai webmaster la possibilità di specificare che il contenuto di Open Directory Project non deve essere utilizzato per gli elenchi del loro sito Web, Microsoft ha introdotto nel maggio 2006 il nuovo NOODPvalore " " per l' robotselemento " " dei metatag. Google seguì nel luglio 2006 e Yahoo! nell'ottobre 2006.
La sintassi è la stessa per tutti i motori di ricerca che supportano il tag.
I webmaster possono decidere se desiderano non consentire l'uso del loro elenco ODP in base al motore di ricerca
Google:
Yahoo!
MSN e Live Search (tramite bingbot , in precedenza msnbot):
< meta name = "bingbot" content = "noodp" >

##### NOYDIR

Yahoo! inserisce contenuti dal proprio Yahoo! directory accanto all'elenco ODP. Nel 2007 hanno introdotto un meta tag che consente ai web designer di rinunciarvi.
L'aggiunta del NOYDIRtag a una pagina impedirà a Yahoo! dalla visualizzazione di Yahoo! Titoli di directory e abstract.

##### Robots-NoContent

Yahoo! anche introdotta nel maggio 2007, il valore di attributo: class="robots-nocontent".Questo non è un meta tag, ma un attributo e un valore, che può essere utilizzato nei tag delle pagine Web dove necessario. Il contenuto della pagina in cui viene utilizzato questo attributo verrà ignorato da Yahoo! crawler e non inclusi nell'indice del motore di ricerca.
Esempi per l'utilizzo del robots-nocontenttag:

### L'attributo language

L'attributo languageindica ai motori di ricerca in quale lingua naturale è scritto il sito web (ad es. Inglese, spagnolo o francese), al contrario del linguaggio di codifica (ad es. HTML). Normalmente è un tag di lingua IETF per il nome della lingua. È particolarmente utile quando un sito web è scritto in più lingue e può essere incluso in ogni pagina per indicare ai motori di ricerca in quale lingua è scritta una determinata pagina. L'utente possono (e fanno) utilizzare le informazioni sulla lingua per selezionare i caratteri appropriati per la lingua, il che migliora l'esperienza utente complessiva della pagina.

#### Esempio di lingua

en
fr
be

#### Esempio di lingua e regione

fr-CA
en-CA
en-US

#### Variazioni degli script di lingua

Le variazioni dello script di lingua possono essere indirizzate direttamente utilizzando ISO 15924.
Esempi
zh-Hant: Chinese (Traditional)
zh-Hans: Chinese (Simplified)

#### Meta refresh

Meta refresh è un metodo per istruire un browser web ad aggiornare automaticamente la pagina web o il frame corrente dopo un dato intervallo di tempo, utilizzando un elemento HTML con il parametro impostato su " " e un parametro che fornisce l'intervallo di tempo in secondi. È anche possibile istruire il browser a recuperare un URL diverso quando la pagina viene aggiornata, includendo l'URL alternativo nel parametro. Impostando l'intervallo di tempo di aggiornamento su zero (o un valore molto basso), il meta refresh può essere utilizzato come metodo di reindirizzamento URL . metahttp-equivrefreshcontentcontent.
Esempio:

##### Svantaggi

I tag meta refresh presentano alcuni inconvenienti:
* Se una pagina viene reindirizzata troppo rapidamente (meno di 2-3 secondi), l'utilizzo del pulsante "Indietro" nella pagina successiva può far tornare alcuni browser alla pagina di reindirizzamento, dopodiché il reindirizzamento si verificherà di nuovo. Ciò è negativo per l'usabilità, poiché potrebbe causare il blocco del lettore sull'ultimo sito web.
* Un lettore può o meno voler essere reindirizzato a una pagina diversa, il che può portare all'insoddisfazione dell'utente o sollevare preoccupazioni sulla sicurezza.

##### Alternative

Reindirizzamento:
Aggiornamenti:

### Cache-Control

Definisce un tempo di scadenza per le informazioni HTML caricate:

### Altri meta tag

I tag meta possono essere utilizzati a discrezione del webmaster per propri utilizzi. L'unico elemento necessario per la grammatica formale è l'utilizzo di un attributo "name" e un attributo "content".
Tra gli altri tag meta diffusi vi sono:
* "author", per indicare l'autore della pagina
* "generator", per indicare il sistema che ha generato la pagina.
* "copyright", per indicare il proprietario del sito
* "viewport", per indicare il dispositivo
* "charset", specifica la codifica dei caratteri

## Studi accademici

Google non utilizza parole chiave HTML o elementi meta tag per l'indicizzazione. Il direttore della ricerca di Google, Monika Henzinger, è stato citato (nel 2002) come dicendo: "Attualmente non ci fidiamo dei metadati perché abbiamo paura di essere manipolati".Altri motori di ricerca hanno sviluppato tecniche per penalizzare i siti Web considerati "frodi al sistema". Ad esempio, un sito Web che ripete più volte la stessa meta parola chiave potrebbe subire una diminuzione del posizionamento da parte di un motore di ricerca che tenta di eliminare questa pratica, sebbene ciò sia improbabile. È più probabile che un motore di ricerca ignori completamente l'elemento meta parola chiave e la maggior parte lo fa indipendentemente dal numero di parole utilizzate nell'elemento.
Google, tuttavia, utilizza elementi meta tag per la visualizzazione dei link al sito. I tag del titolo vengono utilizzati per creare il collegamento nei risultati di ricerca:
La meta descrizione appare spesso nei risultati di ricerca di Google per descrivere il collegamento:
Inoltre, la startup di ricerca aziendale Swiftype considera i meta tag come un meccanismo per segnalare la pertinenza per i motori di ricerca del proprio sito web, introducendo anche la propria estensione chiamata Meta Tag 2.

## Reindirizzamenti

Gli elementi Meta refresh possono essere utilizzati per indicare a un browser Web di aggiornare automaticamente una pagina Web dopo un determinato intervallo di tempo. È anche possibile specificare un URL alternativo e utilizzare questa tecnica per reindirizzare l'utente a una posizione diversa. L'aggiornamento automatico tramite un elemento META è stato deprecato per più di dieci annie prima ancora riconosciuto come problematico.
Il W3C suggerisce che i programmi utente dovrebbero consentire agli utenti di disabilitarlo, altrimenti l'aggiornamento META non dovrebbe essere utilizzato dalle pagine web. Per le impostazioni di sicurezza di Internet Explorer (ora obsoleto in favore di Microsoft Edge), nella categoria "Varie", il meta refresh può essere disattivato dall'utente, disabilitando così la sua capacità di reindirizzamento. In Mozilla Firefox può essere disabilitato nel file di configurazione con il nome della chiave "accessibility.blockautorefresh".
Molti tutorial sul web design sottolineano anche che il reindirizzamento lato client tende a interferire con il normale funzionamento del pulsante "Indietro" di un browser web. Dopo essere stato reindirizzato, facendo clic sul pulsante Indietro l'utente tornerà alla pagina di reindirizzamento, che lo reindirizza nuovamente.
I reindirizzamenti automatici tramite markup (rispetto ai reindirizzamenti lato server) non sono conformi alle W3C - Web Content Accessibility Guidelines (WCAG) 1.0 (linea guida 7.5).

## Intestazioni dei messaggi HTTP

I meta elementi del modulo <meta http-equiv="foo" content="bar">possono essere usati come alternative alle intestazioni HTTP. Ad esempio, <meta http-equiv="expires" content="Wed, 21 June 2006 14:25:27 GMT">indica al browser che la pagina "scade" il 21 giugno 2006 alle 14:25:27 GMT e che può memorizzare la pagina in modo sicuro fino a quel momento. La specifica HTML 4.01 facoltativamente consente a questo tag di essere analizzato dai server HTTP e impostato come parte delle intestazioni di risposta HTTP, ma nessun server web attualmente implementa questo comportamento. Invece, il programma utente emula il comportamento di alcune intestazioni HTTP come se fossero state inviate nell'intestazione della risposta stessa.

## Alternativa ai meta-elementi

Alcuni elementi e attributi HTML gestiscono già determinati pezzi di metadati e possono essere utilizzati dagli autori al posto di META per specificare quei pezzi: l'elemento TITLE, l'elemento ADDRESS, gli elementi INS e DEL, l'attributo "title e" l'attributo "cite".
Un'alternativa aglimetaelementi per un migliore accesso ai soggetti all'interno di un sito web è l'uso di un indice in stile back-of-book per il sito web. Vedere il sito Web dell'American Society of Indexers per un esempio.
Nel 1994 ALIWEB utilizzò anche un file indice per fornire il tipo di informazioni che si trovano comunemente negli attributi delle meta parole chiave.
Nei casi in cui il valore dell'attributo di contenuto è un URL, molti autori decidono di utilizzare un elemento link con un valore appropriato anche per il suo attributo rel..