robotstxt variable

Module robotstxt et multidomaine

Sur le site sabugo, j'utilise le module "Domain access" ainsi que toute une série d'autres modules du même groupe afin d'avoir 2 domaines distincts :

Les 2 domaines sont fonctionnels, et chacun affiche des types de contenus différents, tout en partageant la même base de données et certaines informations.

Vu que le site principal est multilingue, j'ai également installé les modules d'internationalisation (série i18n). Les modules "variable" et "i18n_variable" ont été activés afin de permettre de modifier certaines variables selon le langage du site. Exemple, la variable indiquant quel noeud correspond à la page d'accueil est modifiée afin qu'elle soit différente selon la langue.

Enfin, le module "Domain variable" permet quant à lui de spécialiser certaines variables "par domaine". Il est donc possible, le tout mis ensemble, de spécialiser des variables par langue, par domaine, voire les 2.

Reprenons : j'ai 2 domaines distincts, et je voulais pouvoir proposer un fichier robots.txt par domaine, afin d'indiquer aux robots d'indexation quels sont les pages à ne pas scanner pour chaque domaine. Dans mon cas, la page /portfolio est accessible aussi bien sur les 2 domaines, mais elle est active sur le domaine principal (www) et renvoie une erreur 404 pour le domaine du blog. Inversément, la page /articles est disponible sur le blog mais renvoie une erreur 404 sur le domaine principal.

Je voulais donc pouvoir indiquer dans chaque fichier robots.txt quelles étaient les pages à ne pas scanner, pour éviter des erreurs d'exploration. Malheureusement, le module robotstxt n'est pas du tout multidomaine. Il ne permet pas de spécifier l'info "par domaine", même en éditant la config via chaque domaine et en spécifiant bien que la configuration est spécifique au domaine.

Qu'à cela ne tienne. Il y a quelques temps, j'avais écrit un billet concernant l'utilisation du module variable pour implémenter des variables multilingues. Vu qu'il y a un module "domaine variable", peut-être qu'avec un peu de chance, une implémentation du même genre pourrait permettre d'avoir un robots.txt par domaine ??

Après quelques tests, voici le résultat :

robotstxt_variable.info

name = robots.txt variable
description = "Add variable support for robots.txt module"
core = 7.x

robotstxt_variable.module

/*  robotstxt_variable.module
 *  sabugo
 *  
 *  Created by Thierry Vionnet on 2014-05-01.
 *  Copyright 2014 Thierry Vionnet. All rights reserved.
 */ 
 
 /**
  * Implements hook_variable_info
  * to add new variable into variable system
  * 
  * @param $options
  *
  * @return array
  */
function robotstxt_variable_variable_info($options) {
  $variable = array();
 
  $variable['robotstxt'] = array(
    'type' => 'text',
    'title' => t('Robots txt file', array(), $options),
    'default' => variable_get('robotstxt', FALSE),
    'description' => t('Robots txt file that will be used', array(), $options),
    'group' => 'robotstxt',
    'multidomain' => TRUE,
  );
 
  return $variable;
}
 
 /**
  * Implements hook_variable_group_info
  * to add new group into variable system
  * 
  * @return array
  */
function robotstxt_variable_variable_group_info() {
 $groups['robotstxt'] = array(
    'title' => t('RobotsTxt'), 
    'description' => t('Manage your robots.txt file.'), 
    'access' => 'administer robots.txt', 
    'path' => array('admin/config/search/robotstxt'),
  );
  return $groups;  
}

Comme vous pouvez le voir, l'implémentation est très simple. J'utilise hook_variable_info et hook_variable_group_info pour définir quelques informations. Les points à noter sont dans hook_variable_info, l'utilisation de "text" pour le type et l'utilisation de l'attribut "multidomain" à vrai. Avec cette simple valeur, le module "domain variable" comprend qu'il doit intégrer la variable robotstxt à sa gestion de variables multidomaines. Ne pas oublier de vider le cache si nécessaire.

Il reste ensuite 2 étapes à effectuer :

  1. Naviguer vers /admin/config/system/variable, choisir l'onglet "Realms", cliquer sur "configure" en regard de "Domain", puis choisir le group "RobotsTxt" et cocher la case "Robots txt file" puis sauvegarder le formulaire.
  2. Naviguer vers /admin/config/system/variable, choisir l'onglet "Realm", le sous-onglet Domain, puis cliquer sur "Edit" pour avoir accès à la variable "robotstxt". Il faut sélectionner un domaine au sommet de la page, modifier la variable comme désiré, sauvegarder, puis recommencer en sélectionnant un nouveau domaine.

Une fois la configuration effectuée pour chaque domaine, il suffit de tester, par domaine, l'affichage du fichier /robots.txt pour contrôler que c'est fonctionnel.

Ajouter un commentaire

CAPTCHA
Cette question permet de savoir si vous êtes un visiteur ou un robot de soumission de spams