Tag de âncora dentro de <h1> ou <h1> dentro de tag de âncora: qual é o melhor?


52

Estou tentando usar <h1>tags no meu blog para o título da postagem e me deparei com um problema. O título está com hiperlink.

Caso 1:

<h1> <a href=""> xyz </a> </h1>

caso 2:

<a href=""> <h1> xyz</h1> </a> 

Qual é o melhor em termos de SEO?

Respostas:


57

Se você estiver usando HTML5 , basta escolher um; eles são equivalentes.
O HTML5 permite links em nível de bloco , mas no seu caso não há um motivo específico para isso, pois há apenas um elemento em nível de bloco. Pessoalmente, eu não faria isso aqui, porque ter a <h1>tag do lado de fora tornaria mais fácil procurar por código-fonte.

Qualquer outra coisa (XHTML, HTML4, etc) e a segunda estão completamente erradas. Não seria um código válido e, em algum nível, é ruim para a otimização da sua pesquisa [insira um aviso padrão sobre o quanto uma ofensa realmente afeta alguma coisa, etc.].


Eu tenho uma pergunta: <h1> Olá <h1> // 5 caracteres <h1> <a> Olá </a> </h1> // 5 caracteres ou o Google lê como 12 caracteres?
hfarazm

11

Eles são os mesmos no que diz respeito ao SEO. (Normalmente, os elementos no nível do bloco contêm elementos em linha e não vice-versa; portanto, você deve usar o primeiro exemplo, mas isso não afetará o SEO).


3
Na verdade, os elementos embutidos não devem conter elementos de bloco de acordo com a especificação HTML.
usar o seguinte

3
@DisgruntledGoat Não é bem assim. Doctype precisa ser contabilizado.
Su '

@Su ', quais doctypes permitem elementos de bloco dentro de elementos inline?
usar o seguinte

4
O @DisgruntledGoat HTML5 permite que os links (anteriormente apenas elementos inline) envolvam elementos de bloco, como cabeçalhos e tags de parágrafo. É aqui que o doctype é importante. Se você estiver usando HTML5, use o padrão <a><h1></h1></a>. Caso contrário, use o padrão tradicional de <h1><a></a></h1>. O Google prestará atenção aos dois métodos igualmente, mas alguns navegadores podem não funcionar bem com o padrão não padrão, a menos que você tenha o tipo de documento correto (HTML5).
Tina Sino Vance

portanto, o acima será aplicado também às tags âncora nomeadas. não é? é bom ter <h1> <a name='intro'> Introdução </a> </h1> diferente de <a name='intro'> <h1> Introdução </h1> </a>.
Jayapal Chandran

6

Ambos estão corretos no html5 , o html permite elementos de bloco em elementos inline. Isso também não afeta o SEO, nos dois casos em que o texto é agrupado no cabeçalho e, portanto, permanece com o mesmo valor.

Não é uma opção de validade, mas uma preferência na interface do usuário:

  • Se você envolver o cabeçalho em torno da âncora, criar uma âncora grande, apenas o texto será clicável.
  • Quando você enrola a âncora no cabeçalho, toda a linha é clicável.

Eu fiz de você um exemplo no jsFiddle.net


4

Acho que no Caso 2 a hrefinserção geralmente está desalinhada com o restante da minha página. Mas poderia ser assim que eu coloco minhas margens na minha .css. Assim, eu favoreceria o Caso 1.


1

O que foi dito aqui é perspicaz, obrigado a todos. Vamos dar mais um passo: adicionando microdados e outros na equação.

Digamos que temos

<h1 itemprop="name"><a href="http://goldenage.com/maths.html"
itemprop="url">Mathematics in The Muslim Golden Age</a></h1>

competindo com

<a href="http://goldenage.com/maths.html" itemprop="url"><h1
itemprop="name">Mathematics in The Muslim Golden Age</h1></a>

Para mim, 'independentemente do desempenho', o exemplo 2 faz mais sentido. Porque o link nunca faz parte do nome. A diferença se resume à diferença entre innerHTML e textContent, DOMwise. Observando-o através do innerHTML, a âncora atrapalha. Se textContent fosse o caminho, as tags seriam removidas. Então isso também coloca a questão: innerHTML ou textContent.

Então, eu diria que, considerando os microdados, ter a âncora do lado de fora é mais puro.

baseado em: http://thenewcode.com/617/How-To-Add-Microdata-To-Your-Blog



0

Os links no nível do bloco devem ser evitados para fins de SEO - da boca do cavalo: https://www.seroundtable.com/block-level-links-google-seo-16369.html

Atualização: Takeaways a partir do link ...

Ter um construto de vinculação, como outros já disseram, é bom para vincular. No entanto, para fins de SEO, você deve manter o texto âncora limpo para que o Google possa interpretá-la melhor e atribuir a relevância apropriada.

John Mueller (analista de tendências para webmasters do Google) continua dizendo ...

Esse uso seria bom para nós (Google) - ainda assim buscávamos o link e poderíamos associar seu texto como uma âncora a ele. Somos bastante flexíveis na análise de HTML, então você provavelmente poderia usá-lo com HTML4. Dito isso, quanto mais claro você tornar o texto âncora, mais fácil será para nós entendermos o contexto do link, para que eu nem sempre usasse um parágrafo inteiro como âncora para todos os seus links internos.

TL; DR Para SEO, não use o link em nível de bloco.


Com a esperança de que você atualize sua resposta, isso mostra, em parte, por que os dois exemplos NÃO são equivalentes, como já foi dito.
26417 Rob

-1

Se o objetivo é ter elementos clicáveis ​​adicionais dentro do link (como uma imagem etc.) e ainda validar com html <5, você pode ter as duas maneiras com javascript:

<div onclick="if (this.getElementsByTagName('a')[0]) location=this.getElementsByTagName('a')[0].href;">
<img src="/foo" alt="" />
<h1>
<a href="#">
linked-heading
</a>
</h1>
</div>

caso contrário, simplesmente:

<h1 onclick="if (this.getElementsByTagName('a')[0]) location=this.getElementsByTagName('a')[0].href;">
<a href="#">
linked-heading
</a>
</h1>

adicione cursor:pointerao css do elemento pai para concluir o truque.


11
Javascript embutido? Estamos de volta em 1999? ;)
Martijn

Por que você faria isso? Apenas enrole o cabeçalho na âncora. Este é apenas má prática
Martijn

Leia o comentário com atenção, você encontrará sua resposta escrita ali;) O HTML 4.01 é realmente tão antigo quanto 1999. Quando você tenta validar sua sugestão nesse tipo de documento, você recebe o seguinte erro: "[D] tipo de documento não permitir o elemento "H1" aqui (...) Uma causa possível para esta mensagem é que você tentou colocar um elemento no nível do bloco (como "<p>" ou "<table>") dentro de um elemento embutido ( como "<a>", "<span>" ou "<font>"). " Obviamente, não é absolutamente necessário se preocupar com o que os validadores dizem, daí o "se" no início do comentário.
Lucian Davidescu
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.