Le serveur d'applications pas utilise les débuts de chemin de l'URL d'une requête HTTP comme des "commutateurs". C'est le début de ce chemin qui indique au serveur quelle application doit être invoquée. Pour cette raison, il n'est pas possible d'invoquer directement la racine du site web (/).
Pour les sites statiques qui utilisent la classe prédéfinie WebSite, il faut préciser en début de chemin, le fragment de chemin qui joue le rôle de commutateur vers l'application website. Comme cette application peut supporter un nombre quelconque de sites statiques, il faut également ajouter à ce commutateur celui vers le site souhaité. Ces deux commutateurs jouent en quelque sorte le rôle de "racine virtuelle" du site statique à exploiter. A cette racine virtuelle correspond un répertoire physique sur lequel se trouvent les ressources téléchargeables. Le reste du chemin de l'URL de la requête est donc interprété comme un chemin à ajouter à ce répertoire physique pour accéder à la ressource (page HTML, fichier, etc).
Imaginons que le chemin commute vers l'application website grâce au chemin /doc. Imaginons ensuite que nous souhaitions accéder au site personnel de l'utilisateur jm via le commutateur /jm.
Il est impératif de faire commencer le chemin de l'URL par ces deux commutateurs /doc/jmp/...Si derrière ce chemin, on ne précise aucune ressource, c'est le fichier index.html qui est invoqué par défaut. Ainsi https://mon.hote.ip/doc/jm est équivalent à https://mon.hote.ip/doc/jm/index.html.
Cela ne fonctionne pas avec la racine (https://mon.hote.ip/) car le serveur ne "sait" pas vers quelle application commuter. En pareil cas, il retourne une phrase plein-texte accompagnée de l'erreur 406.
La configuration du serveur offre deux mécanismes pour autoriser l'invocation du chemin racine :
Lorsque les deux paramètres sont définis, c'est la substitution de chemin qui a la priorité (la page arking sera alors ignorée).
La page parking est une page statique pure écrite obligatoirement en langage HTML. Contrairement aux pages "patron", elle ne subit ni transformation, ni substitution : c'est son contenu brut qui est retourné au client distant avec des en-têtes qui correspondent à celles d'une page HTML. Elle est toujours invocable car elle préempte le contrôle de l'agent de sécurité.
En général on l'utilise comme portail de liens vers les sites statiques ou les applications hébergées par le serveur d'applications. La page parking est déclarée dans le fichier de configuration principal du serveur sous la clef server.park. Ci-dessous un exemple de définitione :
server.park=/var/pas/park.htmlRemarque : il est vivement recommandé de décrire les URL des liens contenus par les pages HTML du site statique en URL relatifs à la pseudo-racine du site virtuel (pas de précision du schéma, de l'hôte ou du port) de façon à ce que ces liens référencent toujours le serveur et le chemin de sa racine virtuelle. Sans cela, de nombreux liens du site pourraient être rompus.
La substitution de chemin doit son nom au fait que l'on substitue à la racine invoquée un lien donné. Pour cette raions, le nouveau lien est appelé "lien de substitution". La substitution de chemin est le mécanisme à utiliser lorsque l'on ne souhaite pas créer de page portail ou que cette dernière est produite dynamiquement par le service d'une application. Le lien de substitution est un chemin d'URL déclaré dans le fichier de configuration principal du serveur sous la clef server.root. Ci-dessous un exemple de définitione :
server.root=/doc/jm/index.htmlLa substitution de chemin a un fonctionnement qui requiert la collaboration de l'agent utilisateur (UA pour User Agent), c'est à dire dans le cas général un navigateur.
Avec ce mécanisme activé, lorsque la racine du serveur est invoquée, le serveur retourne un statut 308 avec une en-tête HTTP Location qui a pour valeur le contenu du chemin de substitution déclaré dans la configuration (/doc/jm/index.html dans notre exemple). Notez que le corps de la réponse est vide.
A la réception de ce statut, l'UA est censé invoquer automatiquement une requête HTTP dont l'URL a un chemin contenant le lien de substitution. Le premier échange étant très rapide, l'utilisateur ne s'en rend généralement pas compte et a l'impression d'accèder directement à la ressource identifiée par le lien de substitution.
Remarques :Il existe 2 statuts pour indiquer une redirection permanente : 301 et 308. Le serveur utilise 308 car ce code garantit la non modification de la méthode HTTP utilisée. Avec le code 301, d'anciens navigateurs peuvent être amenés à imposer la méthode GET lors du second échange.
Rédaction par Jean-Marie Piatte (1983-2021)