Sobre este problema HTML
Um identificador de fragmento de URL é a parte de uma URL que segue o símbolo #, normalmente usada para ligar a uma secção específica dentro de uma página. A especificação de URL (RFC 3986 e o WHATWG URL Standard) define um conjunto restrito de carateres que são permitidos em fragmentos. O carácter > (sinal de maior que) está entre aqueles que não são permitidos aparecer literalmente. Quando o W3C HTML Validator encontra > dentro de um valor href — seja no fragmento ou noutro local da URL — gera este erro.
Na maioria dos casos, o carácter > aparece numa URL por acidente — por exemplo, de um erro de copiar-colar, um erro de digitação onde o > de fecho da tag acidentalmente acaba dentro do valor do atributo, ou uma expressão de template malformada. Menos comummente, um programador pode genuinamente necessitar do carácter > como parte do conteúdo da URL.
Porque é que isto importa
-
Ligações quebradas: Os navegadores podem interpretar o
>como o fim da tag HTML ou processar a URL de forma imprevisível, levando a navegação quebrada. - Conformidade com normas: URLs inválidas violam tanto a especificação HTML como as normas de sintaxe de URL, causando falhas de validação.
-
Acessibilidade: Leitores de ecrã e outras tecnologias assistivas dependem de markup bem formado. Um
hrefmalformado pode confundir estas ferramentas e impedir que os utilizadores cheguem ao destino pretendido. - Interoperabilidade: Embora alguns navegadores possam silenciosamente corrigir ou ignorar o carácter inválido, outros podem não o fazer. URLs válidas garantem comportamento consistente em todos os locais.
Como corrigir
-
Se o
>é um erro de digitação ou copiar-colar, simplesmente remova-o do valorhref. Este é o cenário mais comum. -
Se o
>é intencionalmente parte do fragmento ou URL, substitua-o pelo seu equivalente codificado como percentagem:%3E. -
Reveja os seus templates ou saída de CMS — este erro origina frequentemente de motores de template ou sistemas de gestão de conteúdo que injetam valores malformados em atributos
href.
Exemplos
> acidental no caminho da URL
Um erro comum é incluir acidentalmente o > de fecho da tag dentro do valor do atributo:
<!-- ❌ Inválido: ">" não é permitido na URL -->
<a href="/page.php>">Ler mais</a>
Remova o > perdido:
<!-- ✅ Válido: URL limpa sem carácter ilegal -->
<a href="/page.php">Ler mais</a>
> ilegal num identificador de fragmento
O > também pode aparecer dentro da porção de fragmento da URL:
<!-- ❌ Inválido: ">" no fragmento -->
<a href="/docs#section->overview">Ir para visão geral</a>
Se o > é não intencional, remova-o:
<!-- ✅ Válido: fragmento sem carácter ilegal -->
<a href="/docs#section-overview">Ir para visão geral</a>
Se o > é genuinamente necessário no fragmento, codifique-o como percentagem:
<!-- ✅ Válido: ">" codificado como %3E -->
<a href="/docs#section-%3Eoverview">Ir para visão geral</a>
String de consulta ou caminho contendo >
A mesma regra aplica-se fora de fragmentos. Se > aparece em qualquer lugar da URL, codifique-o:
<!-- ❌ Inválido: ">" no parâmetro de consulta -->
<a href="/search?filter=price>100">Itens caros</a>
<!-- ✅ Válido: ">" codificado como percentagem %3E -->
<a href="/search?filter=price%3E100">Itens caros</a>
Erros de saída de template
Se está a usar um template do lado do servidor ou framework JavaScript, certifique-se de que valores dinâmicos inseridos em href são adequadamente codificados para URL. Por exemplo, num template que gera ligações:
<!-- ❌ Inválido: valor dinâmico não codificado -->
<a href="/results#filter=>50">Ver resultados</a>
<!-- ✅ Válido: valor adequadamente codificado -->
<a href="/results#filter=%3E50">Ver resultados</a>
A maioria das linguagens do lado do servidor fornece funções integradas de codificação de URL (ex: encodeURIComponent() em JavaScript, urlencode() em PHP, urllib.parse.quote() em Python) que processarão isto automaticamente. Use sempre estas funções quando inserir conteúdo dinâmico em URLs.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.