2009-09-19 10 views
46

Sto lavorando su un'applicazione ASP e il codice, il modello e i file sono organizzati in un modo che non mi consente di modificare qualcosa al di fuori del tag del corpo. Così sto pensando di inserire i meta tag all'interno del corpo - in questo modo:Cosa succede se i meta tag sono presenti nel corpo del documento?

<!-- FEW ASP INCLUDES --> 
<html> 
    <head> 
    <!-- FALLBACK TITLE AND DESCRIPTION --> 
    <title>Default Title</title> 
    <meta name="description" content="Default Description"> 
</head> 
<body> 
    <!-- SOME HTML MARKUP --> 
    <div class="dynamic-content"> 
     <!-- InstanceBeginEditable name="dynamic-content" --> 
     <!-- THIS IS WHERE I CAN WRITE ASP CODE --> 
     <title><%= Page.Meta.GetTitle(yada, yada) %></title> 
     <meta name="description" content="<%= Page.Meta.GetDescription(yada, yada) %>"> 
     <!-- InstanceEndEditable --> 
    </div> 
    <!-- SOME MORE HTML MARKUP --> 
</body> 
</html> 

Mi chiedo quanto è buono è quello di mettere i meta tag all'interno del corpo di un documento HTML. Come influisce:

  1. motori di ricerca
  2. browser

risposta

37

Questo è naturalmente valida secondo HTML4 .01. I tag META sono only allowed within HEAD (proprio come, ad esempio, TITLE) quindi inserendolo in un BODY, si sta essenzialmente creando un markup non valido.

Dai test superficiali, sembra che alcuni browser (ad esempio Firefox 3.5 e Safari 4) inseriscano effettivamente questi elementi in HEAD durante la creazione di un albero di documenti. Questo non è molto sorprendente: i browser sono noti per tollerare e cercare di interpretare tutti i tipi di markup rotto.

Avere il contrassegno non valido raramente è una buona idea. La gestione non standard da parte dei browser potrebbe portare a varie incoerenze di rendering (e comportamentali) difficili da localizzare. Invece di fare affidamento sulla supposizione del browser, è meglio seguire uno standard.

non so come i motori di ricerca reagiscono a tale zuppa di tag, ma non vorrei rischiare di sperimentare per scoprire :) Forse analizzare solo tag HEAD certe informazioni e salterà i tag BODY-contained del tutto. O forse considerano questi alcuni tentativi di gioco d'azzardo maliziosi e pagine di black list contenenti tale markup. Chissà.

La linea di fondo - evitare questo quando possibile.

+2

Sigh, avrò riorganizzato tutto il codice. Tutti i suggerimenti che contribuiscono a rendere meno doloroso questo processo saranno apprezzati. –

+32

Se stai usando HTML5 ** ** E 'consentito di utilizzare '' tag all'interno di un tag '' fintanto che non v'è un 'attributo presente itemprop'. Vedere la [spec] (http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#the-meta-element). – Husky

+1

Impossibile trovarlo nella specifica ma w3.org validator consente anche meta tag con attributi di proprietà (rdfa-lite) quando si utilizza html5 –

7

Io non lo farei. Non è lì che vanno quei tag, e i motori di ricerca potrebbero vederlo come spamming. Se riesci a riorganizzare la pagina principale, puoi sempre aggiungere un contentplace nella sezione principale. L'ho fatto banalmente con:

<asp:ContentPlaceHolder ID="HeadTags" runat="server" /> 

In questo modo è possibile aggiungere qualsiasi contenuto che ti piace nella sezione testa indietro sulla tua pagina:

<asp:Content ID="Whatever" ContentPlaceHolderID="HeadTags" runat="server" > 

    <meta ... > 

</asp:Content> 
+0

non è una soluzione ASP classico però – AnthonyWJones

+1

No, probabilmente no. Ma come risposte schifose, non funziona solo in produzione, ha quattro voti. –

+0

Soluzione ASP classica ... questa è l'essenza della domanda! –

27

La linea di fondo è di evitare questo quando possibile quando DOCTYPE lo proibisce. Penso che questo sia sicuramente consentito in HTML5 e molto utile nei casi che utilizzano i microdati. Esempio: http://schema.org/Event

+0

W3S afferma che '' deve sempre essere nel '': http: // www .w3schools.com/tag/tag_meta.asp ma non vedo che essere vero nelle specifiche HTML5: https://www.w3.org/TR/html5/document-metadata.html#the-meta-element. Tuttavia li uso esattamente per la stessa ragione: aggiungere metadati (ai post del blog). Sembra convalidare abbastanza felicemente. –

+0

... anche se mi sono appena reso conto che sono costretto a usare XHTML, quindi non lo so davvero. Sicuramente preferisco HTML5 semplice! –

+0

Se HTML5 permette tag 'x' all'interno di tag' y', quindi XHTML5 permette tag 'x' all'interno di tag' y' troppo. La grande differenza è che XHTML5 deve essere XML valido (cioè non tag non chiusi), rendendo più semplice l'analisi di HTML. – RavuAlHemio

2

Direi di usarlo. Ho trovato meta tag all'interno del corpo su varie pagine web e sono su una delle 10 ricerche migliori (su google). Dimostra, almeno per me, che i motori searh non si preoccupano se hai usato questo approccio.

Devi andare avanti se non c'è altro modo.

5

Se il tuo obiettivo è l'ottimizzazione dei motori di ricerca, allora è probabilmente una buona idea seguire gli standard e inserire tutti i tuoi meta tag nello <head>. Tuttavia, per quanto riguarda il comportamento del browser, se inserisci i tag <meta> nel tuo <body>, continueranno a funzionare.Ho deciso di testarlo utilizzando più tag <meta http-equiv="refresh"/> e tag <title> in un documento altrimenti conforme agli standard.

I risultati dei miei test:

Firefox 18, Firefox 3.6, Firefox Mobile, Chrome 24, Chrome per dispositivi mobili, Opera 12, IE6, IE8, IE10:

  • Tutti <meta> tag nella il corpo è stato elaborato.
  • Il primo tag <title> nel documento è stato elaborato, anche se era nel corpo. I tag successivi <title> sono stati ignorati.
  • La prima direttiva di meta aggiornamento ha avuto effetto, implicando che entrambi sono stati elaborati.

IE9:

  • Idem come sopra, ad eccezione di tutti i <title> tag nel corpo sono state ignorate.
  • IE10 in IE9 Anche la modalità Standard si comporta in questo modo.
  • IE9 in IE8 La modalità Standard si comportava come IE8, consentendo il tag 1 <title> nel corpo.

Allora, che cosa succede quando si utilizza meta tag nel corpo? In generale, sembrano funzionare bene. I metatag saranno probabilmente elaborati, quindi se non riesci a metterli in testa allora non mi preoccuperei troppo.

+0

Si prega di notare che è necessario circondare i bit del codice HTML con i backtick per farli visualizzare alla lettera. –

3

Alcuni meta tag destinati ai motori di ricerca non saranno rispettati dai motori di ricerca nella sezione corpo della pagina.

Ad esempio Google dice che non onorerà un rapporto = canonico nel corpo della pagina, ma solo nella parte iniziale della pagina. Here is what Matt Cutts from Google says:

non permettiamo rel = canonical nel CORPO (perché, come ho già detto, la gente avrebbe spam che),

0

ho messo alcuni meta tag nel corpo, ma che è grazie alla tecnologia Microdata. Quando non ho un elemento regolare con le informazioni, che ho bisogno di descrivere l'oggetto secondo il vocabolario schema.org, ho impostato un meta tag con questo contenuto. Preferisco invece farlo in quel modo, per impostare un elemento con display: nessuno. Il modo con display: nessuno può causare più problemi con Google invece di questo, per quanto ne so. Sono d'accordo che non è la migliore pratica, ma quando convalido il mio documento (HTML5) passo la validazione con zero errori. Inoltre ho fatto questo trucco per diversi progetti e nessuno di loro ha problemi con google o altri motori di ricerca. Anche i microdati migliorano il ranking dei motori di ricerca. Non so esattamente cosa vuoi fare con questi meta tag nel corpo, perché non ho visto alcun microdata nel tuo codice. Se ne hai bisogno per questo approccio penso che sia ok, ma in altri casi i meta elementi devono essere nella sezione principale!

0

Avere il tag META Description nei siti Web non è un markup non valido, tuttavia non è un problema enorme dato che i motori di ricerca possono trovare regolarmente il tag ovunque esso sia.Il mio sito web fa questo, dare un'occhiata al mio HTML

http://cameras.specced.co.uk/compare/268/Canon_EOS_200D

Il META è nel sito BODY tuttavia è stato indicizzato da Google e la pagina meta description è stato impostato come il clic se il testo in Ricerca Google risultati.

Problemi correlati