web-dev-qa-db-fra.com

Robots: bloquer / lang / page à partir de l'index mais garder / page

Ma structure d'URL ressemble un peu à ceci:

  • /group1/
  • /group2/
  • /group3/

Group3 (et ses sous-pages) sont également disponibles dans une autre langue aux adresses suivantes. Un préfixe lang a été ajouté à cette URL:

  • /lang/group3/

Malheureusement, une mise à niveau du CMS a rendu les URL suivantes considérées comme valides, même si elles n'ont pas été traduites.

  • /lang/group1
  • /lang/group2

Je voudrais autoriser /group3 et /lang/group3 mais bloquer /lang/group* de l'index.

Quelle est la syntaxe correcte des robots pour ce faire?

1
Tom

Si vous voulez littéralement bloquer quelques "groupes", vous feriez quelque chose comme:

User-agent: *
Disallow: /lang/group1
Disallow: /lang/group2

... et tout le reste serait autorisé. Cela fonctionnerait avec tous les robots qui obéissent au "standard" d'origine. Ou, vous pouvez bloquer tous groupes (group1, group2, etc.) et créer une exception pour "groupe3", comme:

User-agent: *
Disallow: /lang/group
Allow: /lang/group3

Notez que la directive Allow ne fait pas partie du "standard" d'origine, mais est supportée de manière universelle. Le chemin de l'URL est simplement un préfixe.

CEPENDANT, je n’utiliserais pas le fichier robots.txt pour bloquer les pages "explorées". Qu'en est-il des visiteurs errants? Et les méchants? Et robots.txt n'empêche pas l'indexation des pages si elles sont liées par inadvertance. J'utiliserais .htaccess ou votre configuration de serveur pour bloquer réellement tout le trafic en direction de ces URL. Quelque chose comme ce qui suit dans .htaccess:

RewriteEngine On
RewriteRule ^lang/group[12] - [R=404]

Pour répondre avec un 404 pour toutes les demandes adressées à ces URL non valides. Ou bien, utilisez le drapeau F pour répondre avec un "403 Interdit".

2
MrWhite