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.