Déclaration d'une ré-écriture d'URL

ConceptRéécriture d'URL

URL Rewriting

Lors d'un accès à un serveur web, la réécriture d'URL consiste à transformer une URL demandée par un client en une autre URL correspondante sur le serveur.

Cette technique est utile pour simplifier l'écriture d'une URL ou transformer des chemins virtuels en paramètres passés au serveur.

Exemple

La réécriture d'URL permet à un client de demander l'adresse : http://www.sigb.net/pmbservices/formation ,

qui sera transformée au niveau du serveur en : http://www.sigb.net/page.php?rubrique=pmbservices&sous_rubrique=formation

Les paramètres d'une URL

Les paramètres d'une URL sont les informations passées après le caractère ? dans une URL (Généralement un ensemble de couples nom=valeur séparés par le caractère &).

Dans l'exemple ci-dessus, les paramètres sont :

rubrique=pmbservices&sous_rubrique=formation

Composés de deux couples :

  • rubrique=pmbservices

  • sous_rubrique=formation

Remarque

Lors de la réécriture d'URL, on peut demander la copie d'un certain nombre de paramètres dans l'adresse du serveur.

Le problème

Dans PMB, un seul script connector_out.php gère l'appel à toutes les sources. Ce script est situé dans le dossier .../pmb/ws.

Pour identifier la source demandée, le client doit passer le paramètre source_id=identifiant_de_la_source.

 

Un appel à un connecteur se fait toujours par une URL du type : http://serveur/pmb/ws/connector_out.php?source_id=numero.

 

Le problème est que dans certains protocoles - dont l'OAI -, l'URL appelée ne doit pas comporter d'autres paramètres que ceux autorisés par la norme.

C'est à dire que le paramètre source_id n'est pas autorisé dans l'URL.

Truc & astuceLa solution

La solution consiste donc à ré-écrire l'URL afin que pour le protocole, l'URL appelée par le client soit conforme

et que pour le serveur ce soit bien une adresse du type http://serveur/pmb/ws/connector_out.php?source_id=numero qui soit appelée.

Déclarer une réécriture simple d'URL pour Apache

Exemple

Nous allons réécrire l'URL du serveur OAI déclarée par la source 1 : http://serveur/pmb/ws/connector_out.php?source_id=1 en http://serveur/pmb/ws/PMBOAI.

Dans le répertoire .../pmb/ws, créer un fichier .htaccess avec le contenu :

 

RewriteEngine on

RewriteRule ^PMBOAI /pmb/ws/connector_out.php?source_id=1 [L,QSA]

Explication

La première ligne active la réécriture d'URL dans le répertoire.

 

La deuxième déclare une règle de transformation sous la forme : RewriteRule Modèle Substitution [drapeaux] avec :

  • Modèle = "^PMBOAI" (veut dire tout ce qui commence par "PMBOAI".)

  • est remplacé par Substitution ="/pmb/ws/connector_out.php?source_id=1".

  • [drapeaux] = [L,QSA]

    • L : cache au navigateur qu'on a ré-écrit l'URL
    • QSA : permet d'ajouter à la fin de l'URL ré-écrite les paramètres de l'URL d'origine

 

Ainsi la requête : http://serveur/pmb/ws/PMBOAI?verb=Identify qui permet de récupérer l'identification du serveur OAI,

sera traduite au niveau du serveur Web par : http://serveur/pmb/ws/connector_out.php?source_id=1&verb=Identify.

Attention

Pour que le serveur OAI soit pleinement opérationnel, il faut déclarer la nouvelle URL comme URL de base de l'entrepôt dans le paramètrage de la source.