web-dev-qa-db-fra.com

Puis-je inclure une balise méta robots en dehors de la tête dans des extraits HTML censés être AJAX?

J'ai sur mon site un certain nombre de fichiers qui ne sont pas destinés à une visualisation indépendante, mais qui doivent plutôt être AJAXés dans le contenu du site. Ils ne répondent évidemment pas aux normes HTML (pas de corps, pas de tête, etc.) en tant qu'entités indépendantes. Je voudrais empêcher les moteurs de recherche d’indexer ces pages, mais je n’ai pas accès à /robots.txt (ce qui serait bien plus idéal).

Ma question est la suivante: puis-je inclure les éléments suivants en haut de ces fichiers HTML partiels et obtenir les résultats souhaités?

<meta name="robots" content="noindex, noarchive">

Je suppose que cette question comporte deux parties.

  1. Cela causera-t-il des problèmes de rendu dans les navigateurs?
  2. Les moteurs de recherche (au moins Google et Bing) vont-ils interpréter cela comme prévu?
1
Dan

Vous pouvez placer la balise au-dessus d'un document HTML. Cela ne causera pas de problèmes de rendu, car les éléments meta ne sont pas affichés et ce type de meta n'affecte pas le rendu de la page. Les moteurs de recherche le traiteront comme dans tout autre document HTML.

Les spécifications HTML ne nécessitent pas de balises body ou head (à l'exception de XHTML, mais personne ne s'en soucie, à moins que vous ne serviez votre document avec un type de contenu XML). Un document HTML a toujours des éléments body et head, mais leurs balises sont facultatives. Si vous avez un document contenant juste

 Hello world

et s'il est servi sous la forme text/html, il sera traité comme un document HTML contenant un body avec ce texte comme contenu et un élément head sans contenu, comme si le document contenait

<html>
<head>
</head>
<body>
Hello world
</body>
</html>

(Ceci est invalide, car un élément title est requis, mais cela n'empêche pas les navigateurs et les moteurs de recherche de traiter les données au format HTML.) Si vous ajoutez une balise meta au début, elle sera automatiquement devenir le contenu de l'élément head.

1
Jukka K. Korpela

Puisque vous n’avez pas accès à robots.txt, alors .htaccess est également hors de question.

Vous pourriez envisager un HTTP HEADER.

Voir: https://developers.google.com/webmasters/control-crawl-index/docs/robots_meta_tag

X-Robots-Tag: noindex

Exemple de code PHP:

<?php header("X-Robots-Tag: noindex", true); ?>
0
Victor Gutierrez

Malheureusement - et ceci n'est pas documenté par Google - cela fonctionne. J'ai un site client avec un ajax adv qui injecte un asynchrone dans le corps, et Google désindexer cette page.

0
Merlinox

<meta> est destiné à être dans le <head>. Si vous injectez dans une page Web existante, vous obtiendrez un balisage invalide (après ajax)

Mais vous êtes en train de vous noyer dans une tasse d'eau :-) Si c'est destiné à être chargé via ajax. Vous n’avez sûrement aucun lien <a> vers ces fichiers. Si vous ne créez pas de lien vers les fichiers, les robots ne les indexeront pas.

Donc, vous essayez de résoudre un problème inexistant ici.

0
The Disintegrator

Si ces pages sont créées avec un langage côté serveur, vous pouvez inclure une vérification pour une constante ou une variable. Le cas échéant, le fichier peut être chargé. S'il n'existe pas, vous pouvez le rediriger vers un autre fichier ou simplement le bloquer. il.

C'est beaucoup mieux d'envoyer une redirection.

Vous pouvez le faire également avec le fichier .htaccess qui détecte qui le demande, par exemple, si un bot demande le fichier et que vous ne voulez que l’envoyer aux navigateurs, vous pouvez alors le bloquer ou le rediriger avant qu’il n’atteigne le fichier. langue côté serveur.

0
PatomaS