Sobre este problema HTML
As URLs seguem regras de sintaxe rigorosas definidas pela RFC 3986. Dentro do segmento de caminho de uma URL, apenas um conjunto específico de caracteres é permitido: caracteres não reservados (letras, dígitos, -, ., _, ~), caracteres codificados em percentagem (como %20), e certos sub-delimitadores reservados. Quando o validador do W3C encontra um caráter fora deste conjunto permitido no atributo href de um elemento <link>, assinala o erro.
Causas comuns deste problema incluem:
-
Marcadores de posição de template deixados na URL, como
{{variable}}ou${path}, onde as chavetas e sinais de dólar não foram resolvidos ou codificados. -
Espaços em caminhos de ficheiros, como
href="styles/my file.css"em vez de usar%20ou renomear o ficheiro. - Erros de cópia e colagem que introduzem caracteres Unicode invisíveis ou especiais.
-
Barras invertidas (
\) usadas em vez de barras normais (/), que é um erro comum em sistemas Windows. - Caracteres tipo query não codificados colocados na parte do caminho da URL.
Isto é importante porque os navegadores podem interpretar URLs mal formadas de forma inconsistente. Uma URL que funciona num navegador pode falhar noutro. Além disso, URLs inválidas podem quebrar o carregamento de recursos, causar problemas de acessibilidade quando as tecnologias assistivas tentam processar o documento, e levar a comportamentos inesperados com proxies, CDNs, ou outros intermediários que analisam URLs de forma rigorosa.
Para corrigir o problema, inspecione o valor href reportado no erro e:
- Remova o caráter ilegal se foi incluído por engano.
-
Codifique o caráter em percentagem se deve fazer parte da URL (por exemplo, um espaço torna-se
%20, uma barra vertical|torna-se%7C). - Renomeie o ficheiro ou diretório referenciado para evitar caracteres especiais completamente (a abordagem mais simples e confiável).
Exemplos
Incorreto: Espaço no caminho
<link rel="stylesheet" href="styles/my styles.css">
O caráter espaço não é permitido num segmento de caminho de URL. O validador assinalará isto como um caráter ilegal.
Corrigido: Codificar o espaço em percentagem
<link rel="stylesheet" href="styles/my%20styles.css">
Melhor correção: Renomear o ficheiro para evitar espaços
<link rel="stylesheet" href="styles/my-styles.css">
Incorreto: Marcador de posição de template não resolvido
<link rel="stylesheet" href="styles/{{theme}}/main.css">
As chavetas { e } não são válidas em segmentos de caminho de URL. Isto acontece comumente com sintaxe de templating do lado do servidor ou cliente que não foi processada antes do HTML ser servido.
Corrigido: Usar um caminho resolvido válido
<link rel="stylesheet" href="styles/dark/main.css">
Incorreto: Barra invertida usada como separador de caminho
<link rel="stylesheet" href="styles\main.css">
As barras invertidas não são caracteres URL válidos. As URLs usam sempre barras normais.
Corrigido: Usar barras normais
<link rel="stylesheet" href="styles/main.css">
Incorreto: Caráter barra vertical na URL
<link rel="stylesheet" href="styles/font|icon.css">
Corrigido: Codificar a barra vertical em percentagem
<link rel="stylesheet" href="styles/font%7Cicon.css">
Exemplo de documento válido completo
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>My Webpage</title>
<link rel="stylesheet" href="styles/main.css">
<link rel="icon" href="images/favicon.ico">
</head>
<body>
<h1>Welcome to my webpage!</h1>
<p>Here is some content.</p>
</body>
</html>
Quando tiver dúvidas, passe a sua URL por um codificador ou validador de URL separadamente para confirmar que todos os caracteres são legais. Como boa prática geral, use apenas letras minúsculas, dígitos, hífens e barras normais nos seus nomes de ficheiros e diretórios—isto evita problemas de codificação completamente e torna as suas URLs limpas e previsíveis.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.
Saiba mais: