<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>mod_vhost_alias - Serveur HTTP Apache Version 2.4</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
<script src="../style/scripts/prettify.min.js" type="text/javascript">
</script>

<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
<p class="apache">Serveur HTTP Apache Version 2.4</p>
<img alt="" src="../images/feather.png" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.4</a> &gt; <a href="./">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Module Apache mod_vhost_alias</h1>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_vhost_alias.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/mod_vhost_alias.html" title="Français">&nbsp;fr&nbsp;</a> |
<a href="../tr/mod/mod_vhost_alias.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
</div>
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Permet de configurer dynamiquement l'hébergement virtuel de
masse</td></tr>
<tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur de Module:</a></th><td>vhost_alias_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Fichier Source:</a></th><td>mod_vhost_alias.c</td></tr></table>
<h3>Sommaire</h3>

    <p>Ce module permet de créer des serveurs virtuels configurés
    dynamiquement, en autorisant l'utilisation de l'adresse IP et/ou de
    l'en-tête <code>Host:</code> de la requête HTTP comme partie du nom
    de chemin afin de déterminer les fichiers à servir. Ceci facilite la
    gestion d'un grand nombre de serveurs virtuels possèdant des
    configurations similaires.</p>

    <div class="note"><h3>Note</h3>
      <p>Si les modules <code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code> ou
      <code class="module"><a href="../mod/mod_userdir.html">mod_userdir</a></code> sont utilisés pour traduire les URIs
      en noms de fichiers, ils l'emportent sur les directives du module
      <code class="module"><a href="../mod/mod_vhost_alias.html">mod_vhost_alias</a></code> décrites ci-dessous. Par
      exemple, la configuration suivante fera correspondre <code>
      /cgi-bin/script.pl</code> à <code>
      /usr/local/apache2/cgi-bin/script.pl</code> dans tous les cas :</p>

      <pre class="prettyprint lang-config">ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"
VirtualScriptAlias "/never/found/%0/cgi-bin/"</pre>

    </div>
</div>
<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><h3>Sujets</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#interpol">Interpolation du nom de répertoire</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#examples">Exemples</a></li>
</ul><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#virtualdocumentroot">VirtualDocumentRoot</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#virtualdocumentrootip">VirtualDocumentRootIP</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#virtualscriptalias">VirtualScriptAlias</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#virtualscriptaliasip">VirtualScriptAliasIP</a></li>
</ul>
<h3>Traitement des bugs</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">Journal des modifications de httpd</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&amp;list_id=144532&amp;product=Apache%20httpd-2&amp;query_format=specific&amp;order=changeddate%20DESC%2Cpriority%2Cbug_severity&amp;component=mod_vhost_alias">Problèmes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&amp;component=mod_vhost_alias">Signaler un bug</a></li></ul><h3>Voir aussi</h3>
<ul class="seealso">
<li><code class="directive"><a href="../mod/core.html#usecanonicalname">UseCanonicalName</a></code></li>
<li><a href="../vhosts/mass.html">Configuration dynamique de
l'hébergement virtuel de masse</a></li>
<li><a href="#comments_section">Commentaires</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="interpol" id="interpol">Interpolation du nom de répertoire</a></h2>
    

    <p>Toutes les directives de ce module insèrent une chaîne dans un
    nom de chemin. La chaîne insérée (que nous appellerons maintenant le
    "nom") peut être soit le nom du serveur (voir la directive
    <code class="directive"><a href="../mod/core.html#usecanonicalname">UseCanonicalName</a></code> pour les
    détails sur la manière dont il est déterminé), soit l'adresse IP du
    serveur virtuel hébergé par le serveur sous la forme d'un quadruplet
    d'octets séparés par des points. L'insertion est contrôlée par des
    spécificateurs inspirés de <code>printf</code> et possèdant de
    nombreux formats :</p>

<table>

<tr><td><code>%%</code></td>
<td>insère un <code>%</code></td></tr>

<tr><td><code>%p</code></td>
<td>insère le numéro de port du serveur virtuel</td></tr>

<tr><td><code>%N.M</code></td>
<td>insère le nom (en partie)</td></tr>

</table>

    <p><code>N</code> et <code>M</code> permettent de spécifier des
    sous-chaînes du nom. <code>N</code> sélectionne un des composants du
    nom séparés par des points, et <code>M</code> sélectionne des
    caractères à l'intérieur de ce que <code>N</code> a sélectionné.
    <code>M</code> est optionnel et sa valeur par défaut est 0 s'il
    n'est pas spécifié ; le point doit être présent si et seulement si
    <code>M</code> l'est aussi. Les modes d'insertion sont les suivants
    :</p>

    <table>
      
      <tr><td><code>0</code></td>
      <td>le nom en entier</td></tr>

      <tr><td><code>1</code></td>
      <td>la première partie</td></tr>

      <tr><td><code>2</code></td>
      <td>la seconde partie</td></tr>

      <tr><td><code>-1</code></td>
      <td>la dernière partie</td></tr>

      <tr><td><code>-2</code></td>
      <td>l'avant-dernière partie</td></tr>

      <tr><td><code>2+</code></td>
      <td>toutes les parties à partir de la seconde</td></tr>

      <tr><td><code>-2+</code></td>
      <td>toutes les parties jusqu'à l'avant-dernière</td></tr>

      <tr><td><code>1+</code> et <code>-1+</code></td>
      <td>identique à <code>0</code></td></tr>
    </table>

    <p>Si <code>N</code> ou <code>M</code> est plus grand que le nombre
    de parties disponibles, seul un caractère de soulignement est
    inséré.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="examples" id="examples">Exemples</a></h2>
    

    <p>Pour des serveurs virtuels simples à base de nom, utilisez les
    directives suivantes dans le fichier de configuration de votre
    serveur :</p>

    <pre class="prettyprint lang-config">UseCanonicalName    Off
VirtualDocumentRoot "/usr/local/apache/vhosts/%0"</pre>


    <p>Une requête pour
    <code>http://www.example.com/repertoire/fichier.html</code>
    concernera alors la ressource
    <code>/usr/local/apache/vhosts/www.example.com/repertoire/fichier.html</code>.
    </p>

    <p>Pour un très grand nombre de serveurs virtuels, il est avantageux
    d'organiser les fichiers de façon à réduire la taille du répertoire
    <code>vhosts</code>. Pour ce faire, insérez les lignes suivantes
    dans votre fichier de configuration :</p>

    <pre class="prettyprint lang-config">UseCanonicalName    Off
VirtualDocumentRoot "/usr/local/apache/vhosts/%3+/%2.1/%2.2/%2.3/%2"</pre>


    <p>Une requête pour
    <code>http://www.domaine.example.com/repertoire/fichier.html</code>
    concernera alors la ressource
    <code>/usr/local/apache/vhosts/example.com/d/o/m/domaine/repertoire/fichier.html</code>.</p>

    <p>Une répartition plus régulière des fichiers peut être obtenue en
    partant de la fin d'un composant du nom, comme dans l'exemple
    suivant :</p>

<pre class="prettyprint lang-config">VirtualDocumentRoot "/usr/local/apache/vhosts/%3+/%2.-1/%2.-2/%2.-3/%2"</pre>


    <p>La requête précédente concernerait alors
    <code>/usr/local/apache/vhosts/example.com/e/n/i/domaine/repertoire/fichier.html</code>.</p>

    <p>Vous pouvez également utiliser : </p>

<pre class="prettyprint lang-config">VirtualDocumentRoot "/usr/local/apache/vhosts/%3+/%2.1/%2.2/%2.3/%2.4+"</pre>


    <p>La requête précédente concernerait alors
    <code>/usr/local/apache/vhosts/example.com/d/o/m/aine/repertoire/fichier.html</code>.</p>

    <p>Une demande très courante des utilisateurs concerne la possibilité de
    faire correspondre plusieurs racines de documents à plusieurs
    domaines, sans avoir à se préoccuper de la longueur ou du nombre de
    parties du nom d'hôte faisant partie de la requête. Si le nom d'hôte
    de la requête est <code>sub.www.domain.example.com</code> au lieu de
    simplement <code>www.domain.example.com</code>, alors en utilisant
    %3+, la racine des documents sera
    <code>/usr/local/apache/vhosts/domain.example.com/...</code> au
    lieu du répertoire <code>example.com</code> attendu. Dans ce genre
    de situation, il peut s'avérer préférable d'utiliser la combinaison
    <code>%-2.0.%-1.0</code> qui fournira toujours le nom de domaine et
    le tld, par exemple <code>example.com</code> sans tenir compte du
    nombre de sous-domaines ajoutés au nom d'hôte. Dans ces conditions,
    il est possible d'élaborer une configuration qui associera les
    sous-domaines de premier, second et troisième niveau au même
    répertoire :
</p>
<pre class="prettyprint lang-config">VirtualDocumentRoot "/usr/local/apache/vhosts/%-2.0.%-1.0"</pre>

<p>
Dans l'exemple ci-dessus, <code>www.example.com</code>,
<code>www.sub.example.com</code> ou <code>example.com</code>
correspondront tous au répertoire
<code>/usr/local/apache/vhosts/example.com</code>.
</p>



    <p>Pour l'hébergement virtuel à base d'adresse IP, vous pouvez
    insérer les lignes suivantes dans votre fichier de configuration
    :</p>

    <pre class="prettyprint lang-config">UseCanonicalName DNS
VirtualDocumentRootIP "/usr/local/apache/vhosts/%1/%2/%3/%4/docs"
VirtualScriptAliasIP  "/usr/local/apache/vhosts/%1/%2/%3/%4/cgi-bin"</pre>


    <p>Si l'adresse IP de <code>www.domaine.example.com</code> est
    10.20.30.40, une requête pour
    <code>http://www.domaine.example.com/repertoire/fichier.html</code>
    concernera la ressource
    <code>/usr/local/apache/vhosts/10/20/30/40/docs/repertoire/fichier.html</code>.
    Une requête pour
    <code>http://www.domaine.example.com/cgi-bin/script.pl</code>
    concernera la ressource
    <code>/usr/local/apache/vhosts/10/20/30/40/cgi-bin/script.pl</code>.</p>

    <p>Si vous voulez insérer le caractère <code>.</code> dans une
    directive <code>VirtualDocumentRoot</code>, et si cela crée un
    conflit avec un spécificateur <code>%</code>, vous pouvez contourner
    le problème de la manière suivante :</p>

<pre class="prettyprint lang-config">VirtualDocumentRoot "/usr/local/apache/vhosts/%2.0.%3.0"</pre>


    <p>Une requête pour
    <code>http://www.domaine.example.com/repertoire/fichier.html</code>
    concernera alors la ressource
    <code>/usr/local/apache/vhosts/domaine.exemple/repertoire/fichier.html</code>.</p>

    <p>Les spécificateurs de format <code>%V</code> et <code>%A</code>
    de la directive <code class="directive"><a href="../mod/mod_log_config.html#logformat">LogFormat</a></code> s'avèrent très utiles
    lorsqu'ils sont utilisés en conjonction avec ce module.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="virtualdocumentroot" id="virtualdocumentroot">Directive</a> <a name="VirtualDocumentRoot" id="VirtualDocumentRoot">VirtualDocumentRoot</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Permet une configuration dynamique de la racine des
documents d'un serveur virtuel donné</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>VirtualDocumentRoot <em>répertoire-interpolé</em>|none</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>VirtualDocumentRoot none</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_vhost_alias</td></tr>
</table>

    <p>La directive <code class="directive">VirtualDocumentRoot</code> vous
    permet de spécifier où le serveur HTTP Apache pourra trouver vos
    documents en se basant
    sur le nom du serveur. Le résultat de l'expansion du
    <em>répertoire-interpolé</em> est utilisé comme racine de
    l'arborescence des documents d'une manière similaire à l'argument de
    la directive <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>. Si
    <em>répertoire-interpolé</em> a pour valeur <code>none</code>, la
    directive <code class="directive">VirtualDocumentRoot</code> est désactivée.
    Cette directive ne peut pas être utilisée dans le même contexte que
    la directive <code class="directive"><a href="#virtualdocumentrootip">VirtualDocumentRootIP</a></code>.</p>

<div class="warning"><h3>Note</h3>
La directive <code class="directive">VirtualDocumentRoot</code> l'emporte sur
toute directive <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>
définie dans le même contexte ou dans des contextes enfants. Le fait de
définir une directive <code class="directive">VirtualDocumentRoot</code> dans le
contexte du serveur principal va effectivement l'emporter sur toute
directive <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> définie dans
un serveur virtuel quelconque, si vous n'avez pas défini
<code class="directive">VirtualDocumentRoot</code> à <code>None</code> dans ce
serveur virtuel.
</div>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="virtualdocumentrootip" id="virtualdocumentrootip">Directive</a> <a name="VirtualDocumentRootIP" id="VirtualDocumentRootIP">VirtualDocumentRootIP</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configuration dynamique de la racine des documents pour un
serveur virtuel donné</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>VirtualDocumentRootIP <em>répertoire-interpolé</em>|none</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>VirtualDocumentRootIP none</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_vhost_alias</td></tr>
</table>

<p>La directive <code class="directive">VirtualDocumentRootIP</code> est
identique à la directive <code class="directive"><a href="#virtualdocumentroot">VirtualDocumentRoot</a></code> à l'exception
près qu'elle utilise l'adresse IP du serveur virtuel pour
l'interpolation du répertoire à la place du nom du serveur.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="virtualscriptalias" id="virtualscriptalias">Directive</a> <a name="VirtualScriptAlias" id="VirtualScriptAlias">VirtualScriptAlias</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configuration dynamique du répertoire des scripts CGI pour
un serveur virtuel donné</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>VirtualScriptAlias <em>répertoire-interpolé</em>|none</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>VirtualScriptAlias none</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_vhost_alias</td></tr>
</table>

    <p>La directive <code class="directive">VirtualScriptAlias</code> vous
    permet de spécifier où Apache httpd pourra trouver les scripts CGI selon une
    méthode similaire à celle qu'utilise la directive <code class="directive"><a href="#virtualdocumentroot">VirtualDocumentRoot</a></code> pour les
    autres documents. Elle recherche des requêtes dont l'URI commence
    par <code>/cgi-bin/</code>, comme le ferait la directive <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>.</p>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="virtualscriptaliasip" id="virtualscriptaliasip">Directive</a> <a name="VirtualScriptAliasIP" id="VirtualScriptAliasIP">VirtualScriptAliasIP</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configuration dynamique du répertoire des scripts CGI pour
un serveur virtuel donné</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>VirtualScriptAliasIP <em>répertoire-interpolé</em>|none</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>VirtualScriptAliasIP none</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_vhost_alias</td></tr>
</table>

    <p>La directive <code class="directive">VirtualScriptAliasIP</code> est
    identique à la directive <code class="directive"><a href="#virtualscriptalias">VirtualScriptAlias</a></code> à
    l'exception près qu'elle utilise l'adresse IP du serveur virtuel
    pour l'interpolation du répertoire à la place du nom du serveur.</p>

    
</div>
</div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_vhost_alias.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/mod_vhost_alias.html" title="Français">&nbsp;fr&nbsp;</a> |
<a href="../tr/mod/mod_vhost_alias.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
</div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/2.4/mod/mod_vhost_alias.html';
(function(w, d) {
    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
        d.write('<div id="comments_thread"><\/div>');
        var s = d.createElement('script');
        s.type = 'text/javascript';
        s.async = true;
        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
    }
    else { 
        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
    }
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2018 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
    prettyPrint();
}
//--><!]]></script>
</body></html>