blob: f8f00d253f38601dcc96a6a7bdaa9a26fef7d831 [file] [log] [blame]
<?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_proxy_html - Serveur HTTP Apache Version 2.5</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/quickreference.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.5</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.5</a> &gt; <a href="./">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Module Apache mod_proxy_html</h1>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_proxy_html.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/mod_proxy_html.html" title="Français">&nbsp;fr&nbsp;</a></p>
</div>
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Réécrit les liens HTML afin de s'assurer qu'ils soient bien
adressables depuis les réseaux des clients dans un contexte de
mandataire.</td></tr>
<tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Base</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur de Module:</a></th><td>proxy_html_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Fichier Source:</a></th><td>mod_proxy_html.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible depuis la version 2.4 du serveur HTTP Apache.
Disponible en tant que module tiers dans les versions 2.x antérieures</td></tr></table>
<h3>Sommaire</h3>
<p>Ce module fournit un filtre en sortie permettant de réécrire les liens
HTML dans un contexte de mandataire, afin de s'assurer que ces liens
fonctionnent pour les utilisateurs en dehors du mandataire. Il accomplit la
même tâche que la directive <code class="directive"><a href="../mod/mod_proxy.html#proxypassreverse">ProxyPassReverse</a></code> d'Apache accomplit pour les
en-têtes HTTP, et fait partie des composants essentiels d'un mandataire
inverse.</p>
<p>Par exemple, si une entreprise possède un serveur d'applications
nommé appserver.example.com qui n'est visible que depuis son réseau
interne, et un serveur web public <code>www.example.com</code>, il peut
être souhaitable de fournir une passerelle vers le serveur d'application
à l'adresse <code>http://www.example.com/appserver/</code>. Lorsque le
serveur d'applications présente un lien vers lui-même, ce lien doit être
réécrit pour fonctionner à travers la passerelle. A cet effet,
<code class="module"><a href="../mod/mod_proxy_html.html">mod_proxy_html</a></code> permet de réécrire <code>&lt;a
href="http://appserver.example.com/foo/bar.html"&gt;foobar&lt;/a&gt;</code>
en <code>&lt;a
href="http://www.example.com/appserver/foo/bar.html"&gt;foobar&lt;/a&gt;</code>,
ce qui permet de rendre le serveur d'applications accessible depuis
l'extérieur.</p>
</div>
<div id="quickview"><h3>Sujets</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#intro">Introduction</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#custom">Interprétation HTML personnalisée</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#i18n">Internationalisation</a></li>
</ul><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#proxyhtmlbufsize">ProxyHTMLBufSize</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxyhtmlcharsetout">ProxyHTMLCharsetOut</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxyhtmldoctype">ProxyHTMLDocType</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxyhtmlenable">ProxyHTMLEnable</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxyhtmlevents">ProxyHTMLEvents</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxyhtmlextended">ProxyHTMLExtended</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxyhtmlfixups">ProxyHTMLFixups</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxyhtmlinterp">ProxyHTMLInterp</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxyhtmllinks">ProxyHTMLLinks</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxyhtmlmeta">ProxyHTMLMeta</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxyhtmlstripcomments">ProxyHTMLStripComments</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxyhtmlurlmap">ProxyHTMLURLMap</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_proxy_html">Problèmes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&amp;component=mod_proxy_html">Signaler un bug</a></li></ul><h3>Voir aussi</h3>
<ul class="seealso">
<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="intro" id="intro">Introduction</a> <a title="Lien permanent" href="#intro" class="permalink">&para;</a></h2>
<p>mod_proxy_html est apparu en tant que module tiers avec les versions 2.0.x du
serveur HTTP Apache. Il a ensuite été donné à l'ASF en 2011 avec le module
<code class="module"><a href="../mod/mod_xml2enc.html">mod_xml2enc</a></code> (voir <a href="#i18n">Internationalisation</a>), et
fait maintenant partie des modules standards de HTTPD 2.4 et de ses versions de
développement.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="custom" id="custom">Interprétation HTML personnalisée</a> <a title="Lien permanent" href="#custom" class="permalink">&para;</a></h2>
<p>mod_proxy_html utilise en interne le module HTMLParser fourni par la
bibliothèque tierce <a href="http://xmlsoft.org/">libxml2</a>. A la différence
des autres interpréteurs libxml2, HTMLParser traite les documents HTML sans
imposer à ces derniers d'être bien formés du point de vue XML. En particulier,
il sait gérer les tags implicites - comme le &lt;/p&gt; fermant - et les insère
dans le flux des évènements SAX utilisé par mod_proxy_html. Il possède aussi une
connaissance explicite des standards HTML 4 et XHTML 1 du W3C, et peut en
corriger certaines erreurs.</p>
<p>mod_proxy_html offre toute une panoplie d'options permettant de contrôler
l'interprétation du code HTML. La correction d'erreur peut être activée (selon
votre choix de standard HTML) ou désactivée via la directive
<code class="directive">ProxyHTMLDocType</code>. Et à la demande générale, il peut être
configuré pour traiter les éléments et attributs non standards en tant que liens
qui devront peut-être être réécrits, et pour réécrire les liens dans les contenus
embarqués non-HTML (feuilles de style et scripts). Notez que ce module ne
convient pas pour traiter les feuilles de style ou scripts externes ; pour ces
derniers, vous devez utiliser un autre interpréteur comme
<code class="module"><a href="../mod/mod_substitute.html">mod_substitute</a></code> ou <code class="module"><a href="../mod/mod_sed.html">mod_sed</a></code>. Les principales
directives permettant de personnaliser l'interprétation du code HTML sont
<code class="directive">ProxyHTMLLinks</code> et <code class="directive">ProxyHTMLEvents</code>.
Par défaut, elles sont définies dans le fichier de configuration
<var>proxy-html.conf</var> qui contient aussi des commentaires pour vous aider à
personnaliser votre interpréteur si nécessaire. </p>
<div class="note">Pour des raisons historiques, configurer mod_proxy_html pour réécrire les
URLs dans les évènements de scripting n'entraîne pas par défaut la réécriture des
URLs dans les feuilles de style. Ce comportement peut être modifié en
décommentant la ligne correspondante du fichier <var>proxy-html.conf</var> comme
indiqué dans la documentation que contient ce dernier.</div>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="i18n" id="i18n">Internationalisation</a> <a title="Lien permanent" href="#i18n" class="permalink">&para;</a></h2>
<p>mod_proxy_html utilise en interne un interpréteur HTML intelligent fourni par
la bibliothèque tierce <a href="http://xmlsoft.org/">libxml2</a>. L'interpréteur
utilise Unicode (UTF-8) en interne. Ceci complexifie la gestion
des autres encodages nécessaires pour traiter de nombreux sites web dont le
langage est autre que l'anglais. Si ce traitement n'est pas effectué
de manière appropriée, les sites web qui utilisent des caractères non-ASCII dans un
codage autre que UTF-8 (Unicode) ne s'afficheront pas correctement.</p>
<p>Entre sa première version en 2003 et sa donnation à Apache en 2011, le
support de l'internationalisation (i18n) est parti de rien pour arriver à une
structure sophistiquée capable d'appliquer des règles issues de HTTP, HTML et
XML pour détecter le codage d'un document et ainsi le traiter correctement. Ce
traitement était cependant commun à mod_proxy_html et à d'autres modules
utilisant libxml2, et plutôt que de le maintenir au niveau de chacun de ces
modules, il parut sensé de l'extraire de ces derniers pour en faire
un module à part entière. Ce module est <code class="module"><a href="../mod/mod_xml2enc.html">mod_xml2enc</a></code> et il doit
être chargé pour que l'internationalisation fonctionne.</p>
<p>L'interaction entre mod_proxy_html et mod_xml2enc est trop complexe pour être
configurée en utilisant les règles de filtrage classiques, y compris les
directives de <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code>. Ainsi, même si mod_proxy_html peut
quand-même être configuré via les directives de filtrage classiques, ce ne sera
pas suffisant pour le support de l'internationalisation. A cet effet, on a
introduit la nouvelle directive <code class="directive">ProxyHTMLEnable</code> qui
permet de configurer à la fois le filtre de mod_proxy_html et mod_xml2enc. Il
est d'ailleurs recommandé de toujours utiliser ProxyHTMLEnable, même
si le support de l'internationalisation n'est pas nécessaire. <strong>Notez que
ceci constitue un changement par rapport aux précédentes versions où
mod_proxy_html était activé via les directives de filtrage.</strong></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="proxyhtmlbufsize" id="proxyhtmlbufsize">Directive</a> <a name="ProxyHTMLBufSize" id="ProxyHTMLBufSize">ProxyHTMLBufSize</a> <a title="Lien permanent" href="#proxyhtmlbufsize" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définit l'incrément de la taille du tampon, ainsi que sa
taille initiale, pour la mise en
tampon des scripts en ligne et des feuilles de style.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyHTMLBufSize <var>nb-octets</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>ProxyHTMLBufSize 8192</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, répertoire</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_html</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible depuis la version 2.4 du serveur HTTP Apache.
Disponible en tant que module tiers dans les versions 2.x antérieures.</td></tr>
</table>
<p>Pour pouvoir interpréter du contenu non HTML (feuilles de style et
scripts) embarqué dans des documents HTML, <code class="module"><a href="../mod/mod_proxy_html.html">mod_proxy_html</a></code> doit
le lire et le mémoriser en entier dans un
tampon. Ce tampon devra être étendu autant que nécessaire afin de
pouvoir accueillir le plus grand script ou la plus grande feuille de
style de la page, selon un incrément de <var>nb-octets</var> que cette
directive permet de définir.</p>
<p>La valeur par défaut est 8192 et sera suffisante pour la plupart des
pages. Cependant, si vous savez que vous allez mandater des
pages contenant des feuilles de style et/ou scripts plus grands que 8k
(cette taille s'entend pour chaque script ou feuilles de style, non pour
leur ensemble), il sera plus efficace de définir une taille de
tampon initiale plus grande afin d'éviter d'avoir à le redimensionner
dynamiquement au cours du traitement d'une requête.
</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="proxyhtmlcharsetout" id="proxyhtmlcharsetout">Directive</a> <a name="ProxyHTMLCharsetOut" id="ProxyHTMLCharsetOut">ProxyHTMLCharsetOut</a> <a title="Lien permanent" href="#proxyhtmlcharsetout" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Spécifie un jeu de caractères pour la sortie de
mod_proxy_html.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyHTMLCharsetOut <var>jeu-de-caractères | *</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, répertoire</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_html</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible depuis la version 2.4 du serveur HTTP Apache.
Disponible en tant que module tiers dans les versions 2.x antérieures.</td></tr>
</table>
<p>Cette directive permet de spécifier un jeu de caractères pour la
sortie de mod_proxy_html. Elle ne devrait jamais être utilisée, car tout
changement par rapport à la valeur par défaut <code>UTF-8</code> (Unicode -
utilisé en interne par libxml2) induit une charge supplémentaire de
traitement. La définition spéciale <code>ProxyHTMLCharsetOut *</code>
permet de générer une sortie qui utilisera le même encodage que
l'entrée.</p>
<p>Notez que tout ceci ne fonctionne que si le module
<code class="module"><a href="../mod/mod_xml2enc.html">mod_xml2enc</a></code> est chargé.</p>
<div class="note">
<p>Cette directive ne supporte pas les entités HTML. Si un document contient des
caractères qui ne peuvent pas être représentés dans le jeu de caractères cible, la directive
échouera et le document sera probablement corrompu (et ceci même si ces
caractères sont représentés par des entités HTML).</p>
</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="proxyhtmldoctype" id="proxyhtmldoctype">Directive</a> <a name="ProxyHTMLDocType" id="ProxyHTMLDocType">ProxyHTMLDocType</a> <a title="Lien permanent" href="#proxyhtmldoctype" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définit une déclaration de type de document HTML ou XHTML.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyHTMLDocType HTML|XHTML [Legacy]<br /><strong>OR</strong>
<br />ProxyHTMLDocType <var>fpi</var> [SGML|XML]<br /><strong>OR</strong>
<br />ProxyHTMLDocType html5<br /><strong>OR</strong>
<br />ProxyHTMLDocType auto</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>ProxyHTMLDocType auto (2.5/trunk versions); no FPI (2.4.x)</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, répertoire</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_html</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible depuis la version 2.4 du serveur HTTP Apache.
Disponible en tant que module tiers dans les versions 2.x antérieures.</td></tr>
</table>
<p>Avec la première syntaxe, les documents seront déclarés de type HTML
4.01 ou XHTML 1.0 selon l'option spécifiée. Cette option détermine aussi
si la syntaxe utilisée en sortie est HTML ou XHTML. Notez que le format
des documents en provenance du serveur d'arrière-plan n'est pas
important, car l'interpréteur le détectera automatiquement. Si le
second argument optionnel est défini à "<code>Legacy</code>", les documents seront
déclarés de type "Transitional" ; cette option peut être nécessaire si
vous mandatez du contenu datant d'avant 1998, ou si vous travaillez avec
des outils de création/publication déficients.</p>
<p>Avec la deuxième syntaxe, cette directive vous permet d'insérer votre
propre FPI (Formal Public Identifier). Le second argument optionnel
détermine si la syntaxe utilisée sera SGML/HTML ou XML/XHTML.</p>
<p>La troisième syntaxe attribue le type HTML 5 aux documents.</p>
<p>La quatrième syntaxe est nouvelle dans la branche trunk de HTTPD et
n'est pas encore disponible dans les versions stables ; elle utilise
l'interpréteur HTML de libxml2 pour déterminer le type de document.</p>
<p>Avec la première syntaxe, mod_proxy_html va aussi mettre le code HTML
en conformité avec le standard spécifié. Il ne pourra pas corriger
toutes les erreurs, mais il va supprimer les éléments et attributs non
conformes. Il peut aussi journaliser les autres erreurs si la directive
<code class="directive"><a href="../mod/core.html#loglevel">LogLevel</a></code> est définie à
Debug.</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="proxyhtmlenable" id="proxyhtmlenable">Directive</a> <a name="ProxyHTMLEnable" id="ProxyHTMLEnable">ProxyHTMLEnable</a> <a title="Lien permanent" href="#proxyhtmlenable" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Permet d'activer/désactiver le filtre proxy_html.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyHTMLEnable On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>ProxyHTMLEnable Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, répertoire</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_html</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible depuis la version 2.4 du serveur HTTP Apache.
Disponible en tant que module tiers dans les versions 2.x antérieures.</td></tr>
</table>
<p>Cette directive est un simple commutateur permettant
d'activer/désactiver le filtre proxy_html. Si
<code class="module"><a href="../mod/mod_xml2enc.html">mod_xml2enc</a></code> est chargé, elle va aussi activer
automatiquement le support de l'internationalisation.</p>
<p>Notez que le filtre proxy_html s'agira que si les données sont de
type HTML (Content-Type text/html ou application/xhtml+xml), et si
elles passent par un mandataire. Vous pouvez passer outre ces
contraintes (à vos risques et périls) en définissant la variable
d'environnement <var>PROXY_HTML_FORCE</var>.</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="proxyhtmlevents" id="proxyhtmlevents">Directive</a> <a name="ProxyHTMLEvents" id="ProxyHTMLEvents">ProxyHTMLEvents</a> <a title="Lien permanent" href="#proxyhtmlevents" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Spécifie les attributs à traiter comme des évènements de
type scripting.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyHTMLEvents <var>attribut [attribut ...]</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, répertoire</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_html</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible depuis la version 2.4 du serveur HTTP Apache.
Disponible en tant que module tiers dans les versions 2.x antérieures.</td></tr>
</table>
<p>Cette directive permet de spécifier un ou plusieurs attributs à
traiter comme
des évènements de type scripting et de leur appliquer les règles
<code class="directive"><a href="#proxyhtmlurlmap">ProxyHTMLURLMap</a></code> lorsqu'elles ont été définies. Vous
pouvez spécifier un nombre quelconque d'attributs dans une ou plusieurs
directives <code class="directive">ProxyHTMLEvents</code>.</p>
<p>Normalement, cette directive est définie globalement. Si vous
définissez <code class="directive">ProxyHTMLEvents</code> à plusieurs niveaux, certains niveaux
l'emportant sur d'autres, vous devrez spécifier un jeu complet
d'évènements pour chaque niveau.</p>
<p>Le fichier <var>proxy-html.conf</var> fournit une configuration par
défaut et définit les évènements selon les standards
HTML 4 et XHTML 1. Cette configuration peut être adaptée pour s'appliquer aux
URLs embarquées dans les attributs des feuilles de style CSS en ajoutant
l'attribut <var>style</var> à ProxyHTMLEvents, même s'il n'existe pas dans la
configuration par défaut.</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="proxyhtmlextended" id="proxyhtmlextended">Directive</a> <a name="ProxyHTMLExtended" id="ProxyHTMLExtended">ProxyHTMLExtended</a> <a title="Lien permanent" href="#proxyhtmlextended" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Détermine si l'on doit corriger les liens dans les scripts
en ligne, les feuilles de style et les évènements de type scripting.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyHTMLExtended On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>ProxyHTMLExtended Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, répertoire</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_html</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible depuis la version 2.4 du serveur HTTP Apache.
Disponible en tant que module tiers dans les versions 2.x antérieures.</td></tr>
</table>
<p>Si cette directive est définie à <code>Off</code>, les liens HTML
sont réécrits en fonction des directives
<code class="directive"><a href="#proxyhtmlurlmap">ProxyHTMLURLMap</a></code>, mais les liens qui apparaissent
dans le code Javascript et les feuilles de style restent inchangés.</p>
<p>Si elle est définie à <code>On</code>, tous les évènements de type
scripting (définis par la directive
<code class="directive"><a href="#proxyhtmlevents">ProxyHTMLEvents</a></code>) et les scripts inclus ou les
feuilles de style sont aussi
traités par les règles <code class="directive"><a href="#proxyhtmlurlmap">ProxyHTMLURLMap</a></code>, en
fonction des drapeaux définis pour chacune d'entre elles. Ne définissez
cette directive à <code>On</code> qu'en cas de nécessité absolue, car la
charge supplémentaire induite impacte les performances.</p>
<p>Vous devez aussi prêter attention aux modèles de comparaison, car
l'interpréteur n'a aucune notion de la forme que pourrait prendre une URL dans un
script embarqué ou une feuille de style. En particulier, la comparaison
étendus du caractère <code>/</code> a de fortes chances d'induire des
correspondances erronées.</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="proxyhtmlfixups" id="proxyhtmlfixups">Directive</a> <a name="ProxyHTMLFixups" id="ProxyHTMLFixups">ProxyHTMLFixups</a> <a title="Lien permanent" href="#proxyhtmlfixups" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Corrige les erreurs HTML simples.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyHTMLFixups [lowercase] [dospath] [reset]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, répertoire</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_html</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible depuis la version 2.4 du serveur HTTP Apache.
Disponible en tant que module tiers dans les versions 2.x antérieures.</td></tr>
</table>
<p>Cette directive accepte un à trois arguments parmi les suivants :</p>
<ul>
<li><code>lowercase</code> Les Urls sont réécrites en minuscules</li>
<li><code>dospath</code> Les slashes inversés dans les URLs sont
remplacés par des slashes directs.</li>
<li><code>reset</code> Annule toute option définie à un niveau supérieur
dans la configuration</li>
</ul>
<p>Cette directive doit être utilisée avec prudence. Elle peut corriger
certaines erreurs de création, mais risque aussi de modifier par erreur
des liens corrects. Ne l'utilisez que si vous êtes sûr que le serveur
d'arrière-plan est déficient.</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="proxyhtmlinterp" id="proxyhtmlinterp">Directive</a> <a name="ProxyHTMLInterp" id="ProxyHTMLInterp">ProxyHTMLInterp</a> <a title="Lien permanent" href="#proxyhtmlinterp" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Active la réinterprétation des règles
<code class="directive">ProxyHTMLURLMap</code> pour chaque requête.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyHTMLInterp On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>ProxyHTMLInterp Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, répertoire</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_html</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible depuis la version 2.4 du serveur HTTP Apache.
Disponible en tant que module tiers dans les versions 2.x antérieures.</td></tr>
</table>
<p>Cette directive permet d'activer le réinterprétation pour chaque
requête des modèles source et cible de la directive
<code class="directive"><a href="#proxyhtmlurlmap">ProxyHTMLURLMap</a></code>.</p>
<p>Si la réinterprétation n'est pas activée, toutes les règles sont
précompilées au démarrage du serveur. Si elle est activée, les
règles doivent être recompilées pour chaque requête, ce qui induit
une charge de traitement supplémentaire. Elle ne doit donc être activée que si
cela s'avère nécessaire.</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="proxyhtmllinks" id="proxyhtmllinks">Directive</a> <a name="ProxyHTMLLinks" id="ProxyHTMLLinks">ProxyHTMLLinks</a> <a title="Lien permanent" href="#proxyhtmllinks" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Spécifie les éléments HTML dont les attributs d'URL doivent
être réécrits.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyHTMLLinks <var>élément attribut [attribut2 ...]</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, répertoire</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_html</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible depuis la version 2.4 du serveur HTTP Apache.
Disponible en tant que module tiers dans les versions 2.x antérieures.</td></tr>
</table>
<p>Cette directive permet de spécifier les éléments dont les attributs d'URL
doivent être réécrits en utilisant les règles standards <code class="directive"><a href="#proxyhtmlurlmap">ProxyHTMLURLMap</a></code>. Vous devez définir une
directive <code class="directive">ProxyHTMLLinks</code> pour chaque élément, mais chacune d'entre elles peut
spécifier un nombre quelconque d'attributs</p> <p>Normalement, cette directive
est définie globalement. Si vous définissez <code class="directive">ProxyHTMLLinks</code> à plusieurs niveaux,
certains niveaux l'emportant sur d'autres, vous devrez spécifier un jeu complet
de liens pour chaque niveau.</p> <p>Le fichier <var>proxy-html.conf</var>
fournit une configuration par défaut et définit les liens HTML selon les
standards HTML 4 et XHTML 1.</p>
<div class="example"><h3>Exemples issus de proxy-html.conf</h3><pre class="prettyprint lang-config">ProxyHTMLLinks a href
ProxyHTMLLinks area href
ProxyHTMLLinks link href
ProxyHTMLLinks img src longdesc usemap
ProxyHTMLLinks object classid codebase data usemap
ProxyHTMLLinks q cite
ProxyHTMLLinks blockquote cite
ProxyHTMLLinks ins cite
ProxyHTMLLinks del cite
ProxyHTMLLinks form action
ProxyHTMLLinks input src usemap
ProxyHTMLLinks head profile
ProxyHTMLLinks base href
ProxyHTMLLinks script src for</pre>
</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="proxyhtmlmeta" id="proxyhtmlmeta">Directive</a> <a name="ProxyHTMLMeta" id="ProxyHTMLMeta">ProxyHTMLMeta</a> <a title="Lien permanent" href="#proxyhtmlmeta" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Active ou désactive une préinterprétation supplémentaire
des métadonnées dans les sections HTML <code>&lt;head&gt;</code>.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyHTMLMeta On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>ProxyHTMLMeta Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, répertoire</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_html</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible à partir de la version 2.4 du serveur HTTP
Apache ; proposé en tant que module tiers dans les versions 2.x
précédentes.</td></tr>
</table>
<div class="note">
<p>Dans les versions précédentes de mod_proxy_html (y compris celles de
HTTPD 2.0 et 2.2), ProxyHTMLMeta faisait partie du support i18n. Cette
fonctionnalité est maintenant assurée par le module
<code class="module"><a href="../mod/mod_xml2enc.html">mod_xml2enc</a></code>, et ProxyHTMLMeta n'est à l'heure actuelle
plus utile dans le cadre d'un serveur opérationnel ; elle peut cependant
aider les développeurs à tester/déboguer des logiciels tels que les
navigateurs.</p>
</div>
<p>Cette directive permet d'activer ou désactiver une
préinterprétation supplémentaire des métadonnées dans les sections
HTML <code>&lt;head&gt;</code>.</p>
<p>L'activation de <code class="directive">ProxyHTMLMeta</code> va entraîner
l'interprétation de toutes les déclarations
<code>&lt;meta http-equiv=...&gt;</code> et leur conversion en
en-têtes HTTP, afin de conserver le but original de cette forme
de métaélément HTML.</p>
<div class="warning"><h3>Avertissement</h3> Compte tenu du fait que la
directive ProxyHTMLMeta promeut <strong>tous</strong> les éléments
<code>http-equiv</code> au rang d'en-têtes HTTP, il est conseillé de ne
l'activer que si vous faites autant confiance au contenu HTML qu'à votre
serveur mandataire. Avec cette directive en effet, si ce contenu est géré
par des gens malintentionnés, ces derniers seront en mesure d'injecter des
en-têtes HTTP arbitraires et peut-être malveillants dans les réponses de
votre serveur.
</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="proxyhtmlstripcomments" id="proxyhtmlstripcomments">Directive</a> <a name="ProxyHTMLStripComments" id="ProxyHTMLStripComments">ProxyHTMLStripComments</a> <a title="Lien permanent" href="#proxyhtmlstripcomments" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Détermine si les commentaires HTML doivent être supprimés.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyHTMLStripComments On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>ProxyHTMLStripComments Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, répertoire</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_html</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible depuis la version 2.4 du serveur HTTP Apache.
Disponible en tant que module tiers dans les versions 2.x antérieures.</td></tr>
</table>
<p>Si cette directive est définie à <code>On</code>, mod_proxy_html
supprimera les commentaires HTML. Notez que cela supprimera aussi tout
script ou style inclus dans les commentaires (une monstruosité
introduite en 1995/1996 avec Netscape 2 pour les navigateurs plus
anciens, et encore utilisée de nos jours). Cette directive peut aussi
interférer avec des processeurs basés sur les commentaires comme SSI ou
ESI : assurez-vous d'exécuter ces derniers <em>avant</em> mod_proxy_html
dans la chaîne de filtrage si vous supprimez les commentaires !</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="proxyhtmlurlmap" id="proxyhtmlurlmap">Directive</a> <a name="ProxyHTMLURLMap" id="ProxyHTMLURLMap">ProxyHTMLURLMap</a> <a title="Lien permanent" href="#proxyhtmlurlmap" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définit une règle de réécriture des liens HTML</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyHTMLURLMap <var>modèle-source modèle-cible [drapeaux] [cond]</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, répertoire</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_html</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible depuis la version 2.4 du serveur HTTP Apache.
Disponible en tant que module tiers dans les versions 2.x antérieures.</td></tr>
</table>
<p>Il s'agit de la directive la plus importante pour la réécriture des
liens HTML. Lors de l'interprétation d'un document, chaque fois qu'un
lien correspond à <var>modèle-source</var>, la partie du lien concernée
sera réécrite en <var>modèle-cible</var>, en tenant compte des
modifications induites par les drapeaux éventuellement spécifiés et par
la directive <code class="directive"><a href="#proxyhtmlextended">ProxyHTMLExtended</a></code>.
Ne seront considérés comme des liens HTML que les éléments spécifiés via la
directive <code class="directive"><a href="#proxyhtmllinks">ProxyHTMLLinks</a></code>.</p>
<p>Le troisième argument optionnel permet de définir un des drapeaux
suivants (les drapeaux sont sensibles à la casse) :</p>
<dl>
<dt>h</dt>
<dd><p>Ignore les liens HTML (les traverse sans les modifier)</p></dd>
<dt>e</dt>
<dd><p>Ignore les évènements de scripting (les traverse sans les
modifier)</p></dd>
<dt>c</dt>
<dd><p>Traverse les sections de type style ou script sans les modifier.</p></dd>
<dt>L</dt>
<dd><p>Last-match. Si cette règle s'applique, aucune autre règle ne sera
prise en compte (notez qu'il s'agit du comportement automatique pour les
liens HTML).</p></dd>
<dt>l</dt>
<dd><p>L'opposé de L. Passe outre le comportement par défaut du
changement unique pour les liens HTML.</p></dd>
<dt>R</dt>
<dd><p>Utilise des expressions rationnelles pour les modèles.
<code>modèle-source</code> est une expression rationnelle, et
<code>modèle-cible</code> une chaîne de remplacement qui peut être basée
elle aussi sur une expression rationnelle. La mémorisation dans les
expressions rationnelles est supportée : vous pouvez utiliser des
parenthèses () dans le <code>modèle-source</code>, et récupérer la
correspondance de leur contenu via les variables $1 à $9 dans le
<code>modèle-cible</code>.</p>
<p>Si le drapeau R n'est pas fourni, la directive utilisera des chaînes
littérales pour les différents modèles de recherche/remplacement. La
logique de recherche est <em>"commence par"</em> dans les liens HTML, et
<em>"contient"</em> dans les évènements de scripting et les sections de
type style ou script.
</p>
</dd>
<dt>x</dt>
<dd><p>Utilise les expressions rationnelles étendues POSIX. Ne
s'applique qu'avec R.</p></dd>
<dt>i</dt>
<dd><p>Recherche de correspondance sensible à la casse. Ne
s'applique qu'avec R.</p></dd>
<dt>n</dt>
<dd><p>Désactive la mémorisation dans les expressions rationnelles (pour
améliorer les performances). Ne s'applique qu'avec R.</p></dd>
<dt>s</dt>
<dd><p>Recherche de correspondance dans les expressions rationnelles
basée sur la ligne. Ne s'applique qu'avec R.</p></dd>
<dt>^</dt>
<dd><p>Recherche de correspondance au début seulement. Ne concerne que
les recherches de correspondance par rapport à des chaînes, et ne
s'applique pas aux liens HTML.</p></dd>
<dt>$</dt>
<dd><p>Recherche de correspondance à la fin seulement. Ne concerne que
les recherches de correspondance par rapport à des chaînes, et ne
s'applique pas aux liens HTML.</p></dd>
<dt>V</dt>
<dd><p>Insère des variables d'environnement dans le
<code>modèle-cible</code>. Un <code>modèle-cible</code> de la forme
<code>${varname|default}</code> sera remplacé par la valeur de la
variable d'environnement <code>varname</code>. Si cette dernière n'est
pas définie, <code>modèle-cible</code> sera remplacé par
<code>default</code>. La spécification de <code>|default</code> est
facultative.</p>
<p>NOTE: l'insertion de variables d'environnement n'est possible que si
la directive <code class="directive"><a href="#proxyhtmlinterp">ProxyHTMLInterp</a></code> a été définie à
<var>On</var>.</p>
</dd>
<dt>v</dt>
<dd><p>Insère des variables d'environnement dans le
<code>modèle-source</code>. La syntaxe du modèle est identique à la
syntaxe précédente.</p>
<p>NOTE: l'insertion de variables d'environnement n'est possible que si
la directive <code class="directive"><a href="#proxyhtmlinterp">ProxyHTMLInterp</a></code> a été définie à
<var>On</var>.</p>
</dd>
</dl>
<p>Le quatrième argument optionnel <strong>cond</strong> définit une
condition qui sera évaluée pour chaque requête, sous réserve que la
directive <code class="directive"><a href="#proxyhtmlinterp">ProxyHTMLInterp</a></code> ait été définie à
<var>On</var>. Si la condition est évaluée à FALSE, la règle ne sera pas
appliquée à la requête. Si elle est évaluée à TRUE, ou si aucune
condition n'est définie, la règle s'applique.</p>
<p>La <strong>condition</strong> est évaluée par l'<a href="../expr.html">interpréteur d'expression</a>. La syntaxe simple des
conditions dans mod_proxy_html 3.x pour HTTPD 2.0 et 2.2 est aussi
supportée.</p>
</div>
</div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_proxy_html.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/mod_proxy_html.html" title="Français">&nbsp;fr&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 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 Libera.chat, or sent to our <a href="https://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/trunk/mod/mod_proxy_html.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 2023 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/quickreference.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>