blob: 96e60b9a821d2e49134e71189a1c319c5820459f [file]
<!DOCTYPE html SYSTEM "about:legacy-compat">
<html lang="fr"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="width=device-width, initial-scale=1" name="viewport">
<!--
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
<title>Fichiers de configuration - 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">
</script>
<link href="./images/favicon.png" rel="shortcut icon"></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</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="<-" alt="<-" src="./images/left.gif"></a></div>
<div id="path">
<a href="https://www.apache.org/">Apache</a> &gt; <a href="https://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="https://httpd.apache.org/docs/">Documentation</a> &gt; <a href="./">Version 2.5</a></div><div id="page-content"><div id="preamble"><h1>Fichiers de configuration</h1>
<button aria-label="Toggle language list" class="lang-toggle"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" stroke="currentColor" fill="none" viewBox="0 0 24 24" height="16" width="16"><circle r="10" cy="12" cx="12"/><line y2="12" x2="22" y1="12" x1="2"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg></button>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="./de/configuring.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |
<a href="./en/configuring.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="./fr/configuring.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a> |
<a href="./ja/configuring.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="./ko/configuring.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./tr/configuring.html" hreflang="tr" rel="alternate" title="T&uuml;rk&ccedil;e">&nbsp;tr&nbsp;</a></p>
</div>
<p>Ce document d&eacute;crit les fichiers utilis&eacute;s pour configurer
le Serveur HTTP Apache.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif"> <a href="#main">Fichiers de configuration principaux</a></li>
<li><img alt="" src="./images/down.gif"> <a href="#syntax">Syntaxe des fichiers de configuration</a></li>
<li><img alt="" src="./images/down.gif"> <a href="#modules">Modules</a></li>
<li><img alt="" src="./images/down.gif"> <a href="#scope">Port&eacute;e des directives</a></li>
<li><img alt="" src="./images/down.gif"> <a href="#htaccess">Fichiers .htaccess</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif"></a></div>
<div class="section">
<h2 id="main">Fichiers de configuration principaux <a title="Lien permanent" href="#main" class="permalink">&para;</a></h2>
<table class="related"><tr><th>Modules Apparent&eacute;s</th><th>Directives Apparent&eacute;es</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_mime.html">mod_mime</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/core.html#ifdefine">&lt;IfDefine&gt;</a></code></li><li><code class="directive"><a href="./mod/core.html#include">Include</a></code></li><li><code class="directive"><a href="./mod/mod_mime.html#typesconfig">TypesConfig</a></code></li></ul></td></tr></table>
<p>La configuration du serveur HTTP Apache est effectu&eacute;e en pla&ccedil;ant des <a href="mod/directives.html">directives</a> dans des fichiers de
configuration au format texte. Le fichier de configuration principal se nomme
en g&eacute;n&eacute;ral
<code>httpd.conf</code>. La localisation de ce fichier est d&eacute;finie
&agrave; la compilation, mais peut &ecirc;tre red&eacute;finie &agrave; l'aide de l'option
de ligne de commande <code>-f</code>. En outre, d'autres fichiers de
configuration peuvent &ecirc;tre ajout&eacute;s &agrave; l'aide de la directive
<code class="directive"><a href="./mod/core.html#include">Include</a></code>, et des caract&egrave;res de
remplacement
peuvent &ecirc;tre utilis&eacute;s pour inclure de nombreux fichiers de configuration.
Des directives de tous types peuvent &ecirc;tre plac&eacute;es dans chacun de ces fichiers
de configuration. Les modifications dans les fichiers de configuration
principaux ne sont prises en compte par httpd que lorsque le serveur
est d&eacute;marr&eacute; ou red&eacute;marr&eacute;.</p>
<p>Le serveur lit aussi un fichier contenant les types de document mime&nbsp;;
ce fichier est d&eacute;fini par la directive <code class="directive"><a href="./mod/mod_mime.html#typesconfig">TypesConfig</a></code>,
et se nomme <code>mime.types</code> par d&eacute;faut.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif"></a></div>
<div class="section">
<h2 id="syntax">Syntaxe des fichiers de configuration <a title="Lien permanent" href="#syntax" class="permalink">&para;</a></h2>
<p>Les fichiers de configuration de httpd contiennent une directive par
ligne. On peut utiliser l'anti-slash "\" comme dernier caract&egrave;re d'une
ligne pour indiquer que la directive continue &agrave; la ligne suivante ; pour que
cette continuation soit prise en compte, il ne doit y avoir aucun caract&egrave;re
ni blanc entre l'anti-slash et la fin de la ligne.</p>
<p>Les lignes qui commencent par un croisillon &laquo;&nbsp;#&nbsp;&raquo; sont interpr&eacute;t&eacute;es comme
des commentaires et sont ignor&eacute;es. Les commentaires <strong>ne doivent
pas</strong> se trouver sur la m&ecirc;me ligne qu'une directive de configuration,
y compris au d&eacute;but de la continuation d'une ligne comme d&eacute;crit dans le
paragraphe pr&eacute;c&eacute;dent. Les commentaires peuvent aussi continuer sur la ligne
suivante, ce qui signifie que la prochaine ligne physique est aussi
interpr&eacute;t&eacute;e comme un commentaire car la ligne logique commence par un
croisillon.
</p>
<p>Les blancs apparaissant avant une directive sont ignor&eacute;s ; vous pouvez
donc indenter ces derni&egrave;res pour am&eacute;liorer la lisibilit&eacute;. Les lignes vides
sont aussi ignor&eacute;es. les arguments de directive sont s&eacute;par&eacute;s par des blancs.
Si un argument contient des espaces, il doit &ecirc;tre entour&eacute; de guillemets.</p>
<h3 id="quotes">Citation et &eacute;chappement</h3>
<p>Un argument qui contient des espaces doit &ecirc;tre entour&eacute; de guillemets
doubles (<code>"</code>) ou de guillemets simples (<code>'</code>). Les
guillemets eux-m&ecirc;mes ne font pas partie de l&rsquo;argument.</p>
<p>&Agrave; l&rsquo;int&eacute;rieur d&rsquo;une cha&icirc;ne entre guillemets, seules deux s&eacute;quences
d&rsquo;&eacute;chappement sont reconnues&nbsp;: <code>\\</code> produit une controblique
litt&eacute;rale et <code>\"</code> (ou <code>\'</code> si la cha&icirc;ne est entour&eacute;e
de guillemets simples) produit un guillemet litt&eacute;ral sans terminer la
cha&icirc;ne. Toutes les autres s&eacute;quences avec controblique sont conserv&eacute;es telles
quelles &mdash;&nbsp;par exemple, <code>\n</code> sera consid&eacute;r&eacute; comme une cha&icirc;ne
litt&eacute;ral de deux caract&egrave;res <code>\n</code>, pas comme une nouvelle
ligne.</p>
<p>En dehors des guillemets, les controbliques n&rsquo;ont aucune signification
sp&eacute;ciale et sont trait&eacute;es comme des caract&egrave;res litt&eacute;raux. La seule exception
est la controblique de continuation de ligne en fin de ligne, comme d&eacute;crit
ci-avant.</p>
<p>Notez que des cha&icirc;nes entre guillemets adjacentes sans espace entre elles
ne sont <strong>pas</strong> concat&eacute;n&eacute;es &mdash;&nbsp;elles sont trait&eacute;es comme des
arguments s&eacute;par&eacute;s. Par exemple&nbsp;:</p>
<div class="example"><p><code>
# Il ne s&rsquo;agit pas d&rsquo;un seul argument, mais de DEUX&nbsp;:<br>
Header set X-Foo "arg1""arg2"
</code></p></div>
<p>Certaines directives acceptent des arguments qui contiennent des
sous-expressions ayant leur propre syntaxe, telles que les drapeaux de la
directive <code class="directive"><a href="./mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> ou les
expression <a href="expr.html">ap_expr</a>. Dans ces cas, l&rsquo;interpr&eacute;teur de
fichier de configuration enl&egrave;ve tout d&rsquo;abord les guillemets englobants et
traite les s&eacute;quences avec controblique comme d&eacute;crit ci-avant, puis
l&rsquo;interpr&eacute;teur propre &agrave; la directive traite le r&eacute;sultat. En cas de doute,
utiliser des guillemets simples autour d&rsquo;un argument qui contient des
controbliques peut &eacute;viter un double traitement inattendu des s&eacute;quenses
d&rsquo;&eacute;chappement.</p>
<p>Les directives dans les fichiers de configuration ne sont pas
sensibles &agrave; la casse, mais leurs arguments le sont souvent.</p>
<p>Les valeurs des variables d'environnement ou des variables d&eacute;finies via
la directive <code class="directive"><a href="./mod/core.html#define">Define</a></code> peuvent &ecirc;tre
utilis&eacute;es dans le fichier de configuration en utilisant la syntaxe
<code>${VAR}</code>.<br> Si "VAR" est le nom d'une variable valable, la
valeur de la variable est alors substitu&eacute;e &agrave; la cha&icirc;ne <code>${VAR}</code>,
et le processus de lecture du fichier de configuration continue comme si la
cha&icirc;ne correspondant &agrave; la valeur de la variable s'y &eacute;tait trouv&eacute;e
litt&eacute;ralement.<br> Les variables d&eacute;finies via la directive <code class="directive"><a href="./mod/core.html#define">Define</a></code> l'emportent sur les autres variables
d'environnement de l'interpr&eacute;teur de commande.<br> Si la variable "VAR"
n'est pas trouv&eacute;e, la cha&icirc;ne <code>${VAR}</code> n'est pas modifi&eacute;e, et un
avertissement est enregistr&eacute; dans le journal. Si par contre une valeur par
d&eacute;faut existe, on peut utiliser la forme conditionnelle <code>${VAR?=une
valeur par d&eacute;faut}</code>. Notez qu'une variable <strong>d&eacute;finie</strong>
vide ne se verra pas attribuer la valeur par d&eacute;faut et qu'une valeur par
d&eacute;faut vide comme dans <code>${VAR?=}</code> est une substitution valable
(qui g&eacute;n&egrave;re une valeur vide si "VAR" n'est pas d&eacute;finie, mais aucun
avertissement).<br>
Le caract&egrave;re ":" est interdit dans les noms de variables
afin d'&eacute;viter tout conflit avec la syntaxe de la directive <code class="directive"><a href="./mod/mod_rewrite.html#rewritemap">RewriteMap</a></code>.</p>
<p>Seules les variables d'environnement de l'interpr&eacute;teur de commande
d&eacute;finies avant le d&eacute;marrage du serveur peuvent &ecirc;tre utilis&eacute;es en extension.
Les variables d'environnement d&eacute;finies dans le fichier de configuration
lui-m&ecirc;me, par exemple avec <code class="directive"><a href="./mod/mod_env.html#setenv">SetEnv</a></code>,
prennent effet trop tard pour pouvoir &ecirc;tre utilis&eacute;es en extension au sein du
fichier de configuration.</p>
<p>La longueur maximale d'une ligne dans un fichier de configuration
normal, apr&egrave;s substitution des variables et fusion des lignes
interrompues, est approximativement de 16 Mo. Dans les <a href="configuring.html#htaccess">fichiers .htaccess</a>, la longueur
maximale est de 8190 caract&egrave;res.</p>
<p>Vous pouvez v&eacute;rifier l'absence d'erreurs de syntaxe dans vos fichiers
de configuration sans d&eacute;marrer le serveur &agrave; l'aide de la commande
<code>apachectl configtest</code> ou de l'option de ligne de commande
<code>-t</code>.</p>
<p>Vous pouvez utiliser la d&eacute;finition <code>-DDUMP_CONFIG</code> de
<code class="module"><a href="./mod/mod_info.html">mod_info</a></code> pour afficher la configuration avec tous
les fichiers inclus et les variables d'environnement &eacute;valu&eacute;es, tous
les commentaires et les sections <code class="directive"><a href="./mod/core.html#ifdefine">&lt;IfDefine&gt;</a></code> et <code class="directive"><a href="./mod/core.html#ifmodule">&lt;IfModule&gt;</a></code> non actives ayant
&eacute;t&eacute; supprim&eacute;s. Cependant, la sortie ne refl&egrave;te
pas les fusions ou &eacute;crasements pouvant intervenir en cas de
d&eacute;finitions multiples de directives.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif"></a></div>
<div class="section">
<h2 id="modules">Modules <a title="Lien permanent" href="#modules" class="permalink">&para;</a></h2>
<table class="related"><tr><th>Modules Apparent&eacute;s</th><th>Directives Apparent&eacute;es</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_so.html">mod_so</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/core.html#ifmodule">&lt;IfModule&gt;</a></code></li><li><code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code></li></ul></td></tr></table>
<p>httpd est un serveur modulaire. Ceci implique que seules les
fonctionnalit&eacute;s les plus courantes sont incluses dans le serveur de base.
Les fonctionnalit&eacute;s &eacute;tendues sont fournies &agrave; l'aide de <a href="mod/">modules</a> qui peuvent &ecirc;tre charg&eacute;s dans httpd.
Par d&eacute;faut, un jeu de <a href="mod/module-dict.html#Status">modules de base</a> est inclus dans le
serveur &agrave; la compilation. Si le serveur est compil&eacute; de fa&ccedil;on &agrave; utiliser
les <a href="dso.html">modules charg&eacute;s dynamiquement</a>,
alors les modules peuvent &ecirc;tre compil&eacute;s s&eacute;par&eacute;ment et charg&eacute;s &agrave;
n'importe quel moment &agrave; l'aide de la directive
<code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code>.
Dans le cas contraire, httpd doit &ecirc;tre recompil&eacute; pour ajouter ou
supprimer des modules.
Les directives de configuration peuvent &ecirc;tre incluses de mani&egrave;re
conditionnelle selon la pr&eacute;sence ou l'absence d'un module particulier
en les pla&ccedil;ant dans un bloc <code class="directive"><a href="./mod/core.html#ifmodule">&lt;IfModule&gt;</a></code>.</p>
<p>Pour voir quels modules ont &eacute;t&eacute; compil&eacute;s avec le serveur,
vous pouvez utiliser l'option de ligne de commande <code>-l</code>.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif"></a></div>
<div class="section">
<h2 id="scope">Port&eacute;e des directives <a title="Lien permanent" href="#scope" class="permalink">&para;</a></h2>
<table class="related"><tr><th>Modules Apparent&eacute;s</th><th>Directives Apparent&eacute;es</th></tr><tr><td></td><td><ul><li><code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code></li><li><code class="directive"><a href="./mod/core.html#directorymatch">&lt;DirectoryMatch&gt;</a></code></li><li><code class="directive"><a href="./mod/core.html#files">&lt;Files&gt;</a></code></li><li><code class="directive"><a href="./mod/core.html#filesmatch">&lt;FilesMatch&gt;</a></code></li><li><code class="directive"><a href="./mod/core.html#location">&lt;Location&gt;</a></code></li><li><code class="directive"><a href="./mod/core.html#locationmatch">&lt;LocationMatch&gt;</a></code></li><li><code class="directive"><a href="./mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code></li></ul></td></tr></table>
<p>Les directives plac&eacute;es dans les fichiers de configuration principaux
s'appliquent au serveur dans son ensemble. Si vous souhaitez modifier la
configuration d'une partie du serveur seulement, vous pouvez limiter la
port&eacute;e de vos directives en les pla&ccedil;ant dans une section
<code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code>, <code class="directive"><a href="./mod/core.html#directorymatch">&lt;DirectoryMatch&gt;</a></code>, <code class="directive"><a href="./mod/core.html#files">&lt;Files&gt;</a></code>, <code class="directive"><a href="./mod/core.html#filesmatch">&lt;FilesMatch&gt;</a></code>, <code class="directive"><a href="./mod/core.html#location">&lt;Location&gt;</a></code> ou <code class="directive"><a href="./mod/core.html#locationmatch">&lt;LocationMatch&gt;</a></code>.
Ces sections limitent le champ d'application des directives qu'elles
contiennent &agrave; des URls ou des portions du syst&egrave;me de fichiers particuli&egrave;res.
Elles peuvent aussi &ecirc;tre imbriqu&eacute;es, ce qui permet
une configuration tr&egrave;s fine.</p>
<p>httpd peut servir simultan&eacute;ment de nombreux sites web au travers des <a href="vhosts/">Serveurs Virtuels</a>. La port&eacute;e des directives peut ainsi
&ecirc;tre limit&eacute;e en les pla&ccedil;ant dans des sections <code class="directive"><a href="./mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>, afin qu'elles ne s'appliquent qu'aux
requ&ecirc;tes pour un site web particulier.</p>
<p>Bien que la plupart des directives puissent &ecirc;tre plac&eacute;es dans
chacune de ces sections, certaines d'entre elles n'ont aucun sens
dans certains contextes.
Par exemple, les directives qui contr&ocirc;lent la cr&eacute;ation des processus
n'ont de sens que dans le contexte du serveur global. Pour d&eacute;terminer
quelles directives peuvent &ecirc;tre plac&eacute;es dans quelles sections, consultez
le <a href="mod/directive-dict.html#Context">Contexte</a> de la
directive. Pour plus d'informations, nous fournissons des d&eacute;tails dans
<a href="sections.html">Comment fonctionnent les sections Directory,
Location et Files</a>.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif"></a></div>
<div class="section">
<h2 id="htaccess">Fichiers .htaccess <a title="Lien permanent" href="#htaccess" class="permalink">&para;</a></h2>
<table class="related"><tr><th>Modules Apparent&eacute;s</th><th>Directives Apparent&eacute;es</th></tr><tr><td></td><td><ul><li><code class="directive"><a href="./mod/core.html#accessfilename">AccessFileName</a></code></li><li><code class="directive"><a href="./mod/core.html#allowoverride">AllowOverride</a></code></li></ul></td></tr></table>
<p>httpd permet la gestion d&eacute;centralis&eacute;e de la configuration
&agrave; l'aide de fichiers sp&eacute;ciaux plac&eacute;s dans l'arborescence du site web.
Ces fichiers sp&eacute;ciaux se nomment en g&eacute;n&eacute;ral <code>.htaccess</code>,
mais tout autre nom peut &ecirc;tre sp&eacute;cifi&eacute; &agrave; l'aide de la directive
<code class="directive"><a href="./mod/core.html#accessfilename">AccessFileName</a></code>.
Les directives plac&eacute;es dans les fichiers <code>.htaccess</code>
s'appliquent au r&eacute;pertoire dans lequel vous avez plac&eacute; le fichier,
ainsi qu'&agrave; tous ses sous-r&eacute;pertoires.
La syntaxe des fichiers <code>.htaccess</code> est la m&ecirc;me que celle
des fichiers de configuration principaux. Comme les fichiers
<code>.htaccess</code> sont lus &agrave; chaque requ&ecirc;te, les modifications de
ces fichiers prennent effet imm&eacute;diatement.</p>
<p>Pour d&eacute;terminer quelles directives peuvent &ecirc;tre plac&eacute;es
dans les fichiers <code>.htaccess</code>, consultez le
<a href="mod/directive-dict.html#Context">Contexte</a> de la
directive. L'administrateur du serveur peut contr&ocirc;ler quelles
directives peuvent &ecirc;tre plac&eacute;es dans les fichiers
<code>.htaccess</code> en d&eacute;finissant la directive
<code class="directive"><a href="./mod/core.html#allowoverride">AllowOverride</a></code>
dans les fichiers de configuration principaux.</p>
<p>Pour plus d'informations sur les fichiers <code>.htaccess</code>,
se r&eacute;f&eacute;rer au <a href="howto/htaccess.html">tutoriel .htaccess</a>.</p>
</div></div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="./de/configuring.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |
<a href="./en/configuring.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="./fr/configuring.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a> |
<a href="./ja/configuring.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="./ko/configuring.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./tr/configuring.html" hreflang="tr" rel="alternate" title="T&uuml;rk&ccedil;e">&nbsp;tr&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 2026 The Apache Software Foundation.<br>Autoris&eacute; sous <a href="https://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="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p></div><script><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
prettyPrint();
}
var langToggle = document.querySelector('.lang-toggle');
var topLang = document.querySelector('.toplang');
if (langToggle && topLang) {
langToggle.addEventListener('click', function() { topLang.classList.toggle('open'); });
}
var qv = document.getElementById('quickview');
if (qv) {
document.body.appendChild(qv);
var qvBtn = document.createElement('button');
qvBtn.className = 'qv-toggle';
qvBtn.setAttribute('aria-label', 'Toggle page navigation');
qvBtn.innerHTML = '&#9776;';
document.body.appendChild(qvBtn);
qvBtn.addEventListener('click', function() {
var isOpen = qv.classList.toggle('open');
if (isOpen) {
qv.style.top = window.scrollY + 10 + 'px';
}
});
window.addEventListener('scroll', function() { qv.classList.remove('open'); });
}
//--><!]]></script>
</body></html>