<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Anis Berejeb &#187; APACHE</title>
	<atom:link href="http://www.berejeb.com/category/apache/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.berejeb.com</link>
	<description>Actualites et nouveautes du developpement web, PHP, MySQL, HTTP, JavaScript, Performance</description>
	<lastBuildDate>Thu, 24 Jan 2013 11:44:04 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Quick tip : comment desactiver le demarrage automatique de Apache</title>
		<link>http://www.berejeb.com/2010/07/quick-tip-comment-desactiver-le-demarrage-automatique-de-apache/</link>
		<comments>http://www.berejeb.com/2010/07/quick-tip-comment-desactiver-le-demarrage-automatique-de-apache/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 18:36:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[APACHE]]></category>
		<category><![CDATA[desactiver apache]]></category>
		<category><![CDATA[sysv-rc-conf]]></category>
		<category><![CDATA[tip]]></category>

		<guid isPermaLink="false">http://www.berejeb.com/?p=1544</guid>
		<description><![CDATA[Si vous voulez stopper apache et faire que ca ne redemarera pas au redémarrage de votre systeme. Essayez  sysv-rc-conf . Un outil très sympa qui permet de gérer les services sur un shell. L&#8217;installation est simple : ?View Code SHELL1 sudo apt-get install sysv-rc-conf Lancez l&#8217;outil : ?View Code SHELL1 sudo sysv-rc-conf cela devrait vous donner un truc pareil : Le [...]]]></description>
				<content:encoded><![CDATA[<p>Si vous voulez stopper apache et faire que ca ne redemarera pas au redémarrage de votre systeme. Essayez  <em>sysv-rc-conf </em>. Un outil très sympa qui permet de gérer les services sur un shell.<br />
L&rsquo;installation est simple :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1544code3'); return false;">View Code</a> SHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p15443"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p1544code3"><pre class="shell" style="font-family:monospace;">sudo apt-get install sysv-rc-conf</pre></td></tr></table></div>

<p>Lancez l&rsquo;outil :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1544code4'); return false;">View Code</a> SHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p15444"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p1544code4"><pre class="shell" style="font-family:monospace;">sudo sysv-rc-conf</pre></td></tr></table></div>

<p>cela devrait vous donner un truc pareil :<br />
<a href="http://www.berejeb.com/wp-content/uploads/2010/07/sysrv-conf.png"><img class="alignnone size-full wp-image-1545" title="sysrv-conf" src="http://www.berejeb.com/wp-content/uploads/2010/07/sysrv-conf.png" alt="" width="500" height="284" /></a><br />
Le reste est simple! désactivez le service apache et sauvez.<br />
Cool n&rsquo;est ce pas?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.berejeb.com/2010/07/quick-tip-comment-desactiver-le-demarrage-automatique-de-apache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bien comprendre les .htaccess</title>
		<link>http://www.berejeb.com/2009/08/bien-comprendre-les-htaccess/</link>
		<comments>http://www.berejeb.com/2009/08/bien-comprendre-les-htaccess/#comments</comments>
		<pubDate>Sun, 16 Aug 2009 00:49:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[APACHE]]></category>
		<category><![CDATA[WEB]]></category>
		<category><![CDATA[apache authentification]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[entete http]]></category>
		<category><![CDATA[featured]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[proteger repertoire]]></category>
		<category><![CDATA[rewrite rules]]></category>
		<category><![CDATA[virtual hosts]]></category>

		<guid isPermaLink="false">http://www.berejeb.com/?p=643</guid>
		<description><![CDATA[Pendant longtemps, les fichiers .htaccess de configuration d’Apache étaient pour moi un vrai casse tete. C’est pour cela que j’ai décidé de passer un peu de temps sur le sujet pour en comprendre le fonctionnement. J’ai lu de multiples articles en ligne. Je n’ai pas cependant trouvée beaucoup de ressources expliquant ce qu’Apache faisait effectivement. [...]]]></description>
				<content:encoded><![CDATA[<p style="margin-bottom: 0.19in;"><a rel="attachment wp-att-683" href="http://www.berejeb.com/2009/08/bien-comprendre-les-htaccess/apache_feather/"><img class="size-full wp-image-683 alignleft" title="apache_feather" src="http://www.berejeb.com/wp-content/uploads/2009/08/apache_feather.png" alt="apache_feather" width="50" height="177" /></a>Pendant longtemps, les fichiers .htaccess de configuration d’Apache étaient pour moi un vrai casse tete. C’est pour cela que j’ai décidé de passer un peu de temps sur le sujet pour en comprendre le fonctionnement. J’ai lu de multiples articles en ligne. Je n’ai pas cependant trouvée beaucoup de ressources expliquant ce qu’Apache faisait effectivement. La majorité des articles présentait des bouts de codes utiles et des astuces pour aborder les différents problèmes.</p>
<p style="margin-top: 0.19in; margin-bottom: 0.19in;">Dans cet article, en présentant quelques exemples, je vais essayer d’expliquer ce qui se passe afin de comprendre les principes de bases. Vous pourrez par la suite étendre ces exemples pour en créer vos propres commandes. Les exemples de ce tutoriel s’appliquent sur Apache2 et ont ete testés sur Ubuntu. Vous trouverez les sources de ce tutoriel au bas de l&rsquo;article.<span id="more-643"></span></p>
<h2 style="margin-left: 0.5in; text-indent: -0.5in;">Qu&rsquo;est ce que les .htaccess?</h2>
<p style="margin-top: 0.19in; margin-bottom: 0.19in;">Les fichiers .htaccess ou encore les fichiers de configuration distribués  offre un moyen pour effectuer des changements de configuration par base de répertoire. Un fichier contenant une ou plusieurs directives de configuration est placé dans un répertoire, la configuration s’applique alors a ce répertoires et aux répertoires fils.</p>
<h3 style="margin-left: 0.6in; text-indent: -0.6in;" lang="en-US">Directives</h3>
<p style="margin-top: 0.19in; margin-bottom: 0.19in;"><span lang="en-US">On peut voir  “Directives” comme des commandes d’Apache. Les directives sont placées dans le fichier .htaccess et sont relativement des courtes commandes. </span>Elles sont généralement représentées par une paire de clé valeur, qui modifient le comportement d’Apache. Le fichier .htaccess permet d’exécuter un ensembles de directives sans obliger l’accès au fichier de configuration de base d’Apache (généralement le fichier httpd.conf ou apache2.conf). Ce fichier, apache2.conf est typiquement le fichier de configuration global.</p>
<p style="margin-top: 0.19in; margin-bottom: 0.19in;">Note : En dessous de apache2.conf, les configurations peuvent s&rsquo;écrire aussi dans vos fichiers d&rsquo;hôtes virtuels (virtual hosts), ces fichiers qui vous permettent de faire des configurations généraux par domaine. Vous pouvez aussi activer / désactiver globalement les directives a ce niveau. Dans ce qui reste du tutoriel, je vais continuer a citer apache2 comme fichier de référence.</p>
<p style="margin-top: 0.19in; margin-bottom: 0.19in;">La fonctionnalité  est idéale pour les hébergements mutualisés du fait que  l’hébergeur ne permet pas a ses différents client d’accéder au fichier de configuration global qui affecte l’ensemble des clients qui hébergent leurs applications sur ce serveur. Les clients alors pourront, en activant ces fichiers .htaccess, spécifier  et executer leurs directives Apache sur leurs répertoires et fichiers respectives. Évidemment, les fichiers .htaccess sont très utiles pour les développeurs comme nous le verrons plus tard.</p>
<p style="margin-top: 0.19in; margin-bottom: 0.19in;">Ce qu’il faut savoir c’est que n’importe quelle directive qu’on peut spécifier dans le fichier .htaccess peut également être placée dans le fichier apache2.conf. L’inverse n’est toutefois pas vrai, ce ne sont pas toutes les configurations que le apache2.conf peut comprendre qui peuvent être mis dans un .htaccess. En effet, les fichiers .htaccess doivent être activées dans le fichier apache2.conf afin d’être exécutées. Une fois activées, leur pouvoir peut être limite a certains “contextes”,  ils pourront alors redéfinir quelques aspects mais pas d’autres. De cette façon, les administrateurs pourront contrôler ce que peuvent faire les développeurs avec ces fichiers .htaccess.</p>
<h2 style="margin-left: 0.5in; text-indent: -0.5in;">Comment activer les .htaccess</h2>
<p style="margin-top: 0.17in; margin-bottom: 0.19in;">Généralement,  les .htaccess sont actives par défaut. Ceci est contrôlé par la directive <span style="color: #0000ff;"><span style="text-decoration: underline;"><a href="http://httpd.apache.org/docs/trunk/mod/core.html#allowoverride">AllowOverride</a></span></span> dans le fichier apache2.conf. Cette directive peut être uniquement placée dans la section &lt;Directory&gt;. Attention a ne pas être confondu ici, Un fichier  typique apache2.conf définit un DocumentRoot et la majorité du fichier contiendra des directives a l’ intérieur de la section Directory qui gère votre répertoire global (votre document root). <span lang="en-US">Ceci inclut la directive AllowOverride.</span></p>
<p style="margin-top: 0.19in; margin-bottom: 0.19in;"><span lang="en-US">La valeur par  défaut est “All” et donc les fichiers .htaccess seront actives par défaut. </span>Une valeur alternative peut être “None” ce qui permettra de les  désactiver. De multiples valeurs peuvent limiter la configuration a seulement quelques contextes. Par exemple:</p>
<ul>
<li>AuthConfig – 	directives d’Autorisation comment ceux qui gèrent les 	authentifications Authentification.</li>
<li>FileInfo – directives qui gèrent 	les entêtes HTTP, les documents d’erreur, les Cookies, la 	reecriture d’URL (URL rewriting) etc.</li>
<li>Indexes – personnalisation par défaut du contenu du répertoire</li>
<li>Limit – contrôle l’accès aux 	pages de manières différentes</li>
<li><span style="color: #0000ff;"><span style="text-decoration: underline;"><a href="http://httpd.apache.org/docs/trunk/mod/core.html#options">Options</a></span></span> – pareil que Indexes, mais inclut plus de valeurs comme ExecCGI, 	FollowSymLinks etc.</li>
</ul>
<h4 style="margin-left: 0.6in; text-indent: -0.6in; font-weight: normal;">L’exemple suivant permet une surcharge complète des .htaccess</h4>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p643code13'); return false;">View Code</a> SHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p64313"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p643code13"><pre class="shell" style="font-family:monospace;"># controle total des .htaccess
AllowOverride All</pre></td></tr></table></div>

<p style="margin-bottom: 0in;">Par contre, l’exemple ci-dessous permet une configuration plus granulaire  (surcharge limitee):</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p643code14'); return false;">View Code</a> SHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p64314"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p643code14"><pre class="shell" style="font-family:monospace;"># Permettre uniquement de specifier Authorization et Indexes
AllowOverride AuthConfig Indexes</pre></td></tr></table></div>

<p style="margin-bottom: 0in;">
<p style="margin-bottom: 0in;">La première ligne de chacun des deux exemples précédent est un commentaire. Ceci est commun aux langages de scripts et a plusieurs fichiers de configuration. Bien que fortement conseillés, les commentaires ne sont pas obligatoires.</p>
<p style="margin-top: 0.19in; margin-bottom: 0.19in;">La deuxième ligne pressente la directive AllowOverride. C’est la syntaxe usuelle d’une directive Apache. Le nom de la directive (AllowOverride) est suivi d’un espace suivi d’une liste de valeurs séparées par un espace.</p>
<p style="margin-bottom: 0in;">Dans plusieurs cas, une seule erreur dans le fichier apache2.conf ou un fichier de configuration .htaccess peut causer un plantage temporaire du serveur, les utilisateurs verront le message  : <em><strong>500 &#8211; Internal Server Error pages.</strong></em></p>
<p style="margin-top: 0.19in; margin-bottom: 0.19in;">Pour cette unique raison, c’est une bonne pratique de faire une copie de sauvegarde de votre fichier apache2.conf et de vos fichiers .htaccess avant de faire un changement ou un ajout. <span lang="en-US">Il aussi conseille de faire des petits changement a chaque fois et de vérifier s ces changements ont pris effet. </span>De cette manière vous vous retrouverez plus rapidement en cas d’erreur.</p>
<p style="margin-top: 0.19in; margin-bottom: 0.19in;">Si vous êtes vraiment confus dans la syntaxe d’une directive, veuillez consulter la <span style="color: #0000ff;"><span style="text-decoration: underline;"><a href="http://httpd.apache.org/docs/trunk/mod/core.html">la liste des directives Apache pache</a></span></span> qui reste toujours la meilleure ressource de documentation.</p>
<h2 style="margin-left: 0.5in; text-indent: -0.5in;">Tester si .htaccess est activé  :</h2>
<p><span style="font-family: Times New Roman,serif;"><span style="font-size: small;">Le premier fichier auquel apache route vos requêtes http est par defaut le fichier index.html. Ce cas est tres simple. Il utilise une directive pour dire a Apache d’aller a un fichier </span></span><span style="font-family: Times New Roman,serif;"><span style="font-size: small;"><em>leBonFichier.html </em></span></span><span style="font-family: Times New Roman,serif;"><span style="font-size: small;">avant de chercher</span></span> <span style="font-family: Times New Roman,serif;"><span style="font-size: small;"><em>index.html</em></span></span> <span style="font-family: Times New Roman,serif;"><span style="font-size: small;"><em>. Si .si .htaccess est activee, lorsque vous pointez votre navigateurs vers ce répertoire, Apache chargera le fichier .htaccess et saura qu&rsquo;il devra charger le fichier leBonFichier.html.  Si par contre .htaccess n&rsquo;est pas activé, Apache ignorera le chargement du .htaccess et chargera donc index.html</em></span></span><span style="font-family: Times New Roman,serif;"><span style="font-size: small;">. </span></span></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p643code15'); return false;">View Code</a> SHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p64315"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p643code15"><pre class="shell" style="font-family:monospace;"># Dire a Apache de charger leBonFichier.html avant de charger index.html
DirectoryIndex leBonFichier.html index.html</pre></td></tr></table></div>

<p lang="en-US">
<p style="margin-bottom: 0in;"><span lang="en-US">L&rsquo;idée est simple ici, la directive </span><span style="color: #0000ff;"><span style="text-decoration: underline;"><a href="http://httpd.apache.org/docs/trunk/mod/mod_dir.html#directoryindex"><span lang="en-US">DirectoryIndex</span></a></span></span><span lang="en-US"> prend  une liste de fichiers éventuels a charger. En effet, c&rsquo;est ce qui fait que lorsque vous accédez a une adresse du genre </span><span style="color: #0000ff;"><span style="text-decoration: underline;"><a href="http://www.serveur.com/"><span lang="en-US">http://www.serveur.com</span></a></span></span><span lang="en-US"> vous seriez éventuellement redirige vers </span><span style="color: #0000ff;"><span style="text-decoration: underline;"><a href="http://www.serveur.com/index.html"><span lang="en-US">http://www.serveur.com/index.html</span></a></span></span><span lang="en-US"> . En effet, Apache cherchera les fichiers de gauche a droite. Le premier fichier trouve sera chargé et affiché au client.</span></p>
<p style="margin-bottom: 0in;" lang="en-US">
<p style="margin-bottom: 0in;" lang="en-US">Voici le rendu selon le premier exemple si .htaccess est active</p>
<p style="margin-bottom: 0in;" lang="en-US"><a rel="attachment wp-att-650" href="http://www.berejeb.com/2009/08/bien-comprendre-les-htaccess/example1-1/"><img class="aligncenter size-medium wp-image-650" title="example1-1" src="http://www.berejeb.com/wp-content/uploads/2009/08/example1-1-300x217.png" alt="example1-1" width="300" height="217" /></a></p>
<p style="margin-bottom: 0in;" lang="en-US">et si .htaccess n&rsquo;est pas active</p>
<p style="margin-bottom: 0in;" lang="en-US"><a rel="attachment wp-att-651" href="http://www.berejeb.com/2009/08/bien-comprendre-les-htaccess/example1-2/"><img class="aligncenter size-medium wp-image-651" title="example1-2" src="http://www.berejeb.com/wp-content/uploads/2009/08/example1-2-300x217.png" alt="example1-2" width="300" height="217" /></a></p>
<h2 style="margin-left: 0.5in; text-indent: -0.5in;" lang="en-US">Conséquences des fichiers .htaccess</h2>
<p>Il est important de comprendre ce qui se passe lorsque les .htaccess sont activées sur le serveur. Comme mentionnée auparavant, quand vous activez les .htaccess, vous allouez la surcharge ou la redéfinition des directives  pour un répertoire et <em>tous ces répertoires fils. </em><span style="font-style: normal;">Ayez toujours en tête que vous êtes en train d&rsquo;affecter tous les sous répertoires ainsi que le répertoire courant</span><strong><span style="font-style: normal;">.</span></strong></p>
<p><strong><span style="font-style: normal;"><span style="font-weight: normal;">Aussi, lorsqu&rsquo;ils sont actifs, le serveur va perdre un peu de performance. La raison est que pour chaque requête sur le serveur, si .htaccess est activé, lorsque Apache va ouvrir le fichier  requis, il a a chercher le fichier .htaccess pour </span></span></strong><strong><em><strong>chaque répertoire </strong></em></strong><strong><span style="font-style: normal;"><span style="font-weight: normal;">menant au fichier.</span></span></strong></p>
<p style="margin-bottom: 0in;"><strong><span style="font-style: normal;"><span style="font-weight: normal;">On peut comprendre beaucoup de choses ici: premièrement, parce qu&rsquo;Apache cherchera toujours le fichier .htaccess pour chaque requête, chaque changement sur le fichier prendra effet directement.  Ces fichiers ne sont pas cachés et Apache verra immédiatement le changement a la prochaine requête. Par contre, ceci veut dire aussi  qu&rsquo;Apache va faire du travail supplémentaire pour chaque requête. Par exemple, si un utilisateur demande le fichier /www/repertoireduclient/sousrepertoire/index.html, le serveur cherchera les fichiers .htaccess suivants :</span></span></strong></p>
<ul>
<li>/www/.htaccess</li>
<li>/www/repertoireduclient/.htaccess</li>
<li>/www/repertoireduclient/sousrepertoire/.htaccess</li>
</ul>
<p style="margin-bottom: 0in;">les acces a ce fichier potentiel (potentiel, puisque le fichier peut ne pas exister) prendra du temps.</p>
<p style="margin-bottom: 0in;">Ceci ne veut pas dire que vous devez ignorer d&rsquo;utiliser les .htaccess. Par contre, si vous avez access a modifier votre apache2.conf (ou vos fichiers d&rsquo;hotes virtuels), mettez toujours vos directives la dedans.  Voici un exemple :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p643code16'); return false;">View Code</a> SHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p64316"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p643code16"><pre class="shell" style="font-family:monospace;">&amp;lt;Directory /www/repertoireduclient/sousrepertoire&amp;gt;
# vos directives ici
&amp;lt;/Directory&amp;gt;</pre></td></tr></table></div>

<p style="margin-bottom: 0in;"><span>l&rsquo;inconvénient de cette  approche est que vous auriez a redémarrer Apache pour que les modifications tiennent effet.</span></p>
<p style="margin-bottom: 0in;"><span>Ce que je fais personnellement, lors du développement, j&rsquo;utilise les .htaccess pour aller vite. Mais une fois sur un environnement de Test ou de Prod, j&rsquo;applique les effets sur les fichiers d&rsquo;hôte virtuel ou dans Apache2.conf</span></p>
<p style="margin-bottom: 0in;"><span>Voici maintenant quelques exemples </span></p>
<h4 style="margin-left: 0.6in; text-indent: -0.6in;">Listings de repertoires</h4>
<p>Avant d&rsquo;aller vers des exemples complexes, commençons par un truc simple mais utile.  Vous avez certainement rencontre un exemple de listing de répertoires. Lorsqu&rsquo;un utilisateur accéde a un répertoire, Apache va chercher le fichier par défaut qui est index.html, index.php ou un truc similaire. Si il ne trouve aucun fichier, il utilisera le module  <span style="color: #0000ff;"><span style="text-decoration: underline;"><a href="http://httpd.apache.org/docs/trunk/mod/mod_autoindex.html">mod_autoindex</a></span></span> pour afficher la liste des fichiers et répertoires dans le répertoire courant. Des fois ce module est activé et des fois il est désactivé. Vous pouvez manipuler toutefois ce comportement avec les .htaccess.</p>
<p><span>Voici un exemple :</span></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p643code17'); return false;">View Code</a> SHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p64317"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p643code17"><pre class="shell" style="font-family:monospace;"># Desactiver les listings de repertoire pour ce repertoire et les sous-repertoires.
# Ceci va cacher les fichier au public sauf si ils connaissent les URLs directs
Options -Indexes</pre></td></tr></table></div>

<p style="margin-bottom: 0in;"><span>La directive </span><span style="color: #0000ff;"><span style="text-decoration: underline;"><a href="http://httpd.apache.org/docs/trunk/mod/core.html#options">Options</a></span></span><span> prend un nombre de valeurs (+ ou –  pour Indexes), ceci va hériter des directives Options des répertoires parents et ceux de la configuration globale. En ajoutant la syntaxe + ou -, vous vous assurez que vous voulez uniquement certains options, puisque vous ne connaissez pas les options qui étaient mises auparavant.</span></p>
<p style="margin-bottom: 0in;">
<p style="margin-bottom: 0in;"><span>Le résultat de la directive -Indexes est le suivant :</span></p>
<p style="margin-bottom: 0in;"><a rel="attachment wp-att-652" href="http://www.berejeb.com/2009/08/bien-comprendre-les-htaccess/example-2-1/"><img class="aligncenter size-medium wp-image-652" title="example-2-1" src="http://www.berejeb.com/wp-content/uploads/2009/08/example-2-1-300x196.png" alt="example-2-1" width="300" height="196" /></a></p>
<p style="margin-bottom: 0in;"><span>Celui de +Indexes est le suivant</span></p>
<p style="margin-bottom: 0in;"><a rel="attachment wp-att-653" href="http://www.berejeb.com/2009/08/bien-comprendre-les-htaccess/example-2-2/"><img class="aligncenter size-medium wp-image-653" title="example-2-2" src="http://www.berejeb.com/wp-content/uploads/2009/08/example-2-2-300x196.png" alt="example-2-2" width="300" height="196" /></a></p>
<p style="margin-bottom: 0in;">
<h2 style="margin-left: 0.5in; text-indent: -0.5in; margin-top: 0in; margin-bottom: 0in;">Authentification de base</h2>
<p>En effet, vous ne voulez peut être pas désactiver complètement l&rsquo;accès a un répertoire. Vous voulez peut être donner l&rsquo;accès a certaines personnes. La directive  <span style="color: #0000ff;"><span style="text-decoration: underline;"><a href="http://httpd.apache.org/docs/1.3/howto/auth.html">Basic Authentication</a></span></span> peut vous etre utile dans ce cas. C&rsquo;est le cas le plus répandu sur le web. Lorsqu&rsquo;un utilisateur essaye d&rsquo;accéder aux pages, il va avoir la fenêtre familière <em><strong>Login/mot de passe</strong></em>. Seuls les utilisateurs permis vont pouvoir accéder aux pages.</p>
<p>Pour l&rsquo;authentification de base il y a deux étapes:</p>
<ul>
<li>Configurer un fichier (en-crypté) 	qui va contenir les logins/mots de passe</li>
<li>Ajouter quelques lignes au fichier .htaccess pour utiliser ce 	fichier</li>
</ul>
<p>Traditionnellement, les développeurs web nomment le fichier qui contient les comptes/mots de passe « .htpasswd ». ceci vient du fait que l&rsquo;outil en ligne de commande qui génère la paire compte/mot de passe en-crypté est appelé htpasswd. Il existe plusieurs  <span style="color: #0000ff;"><span style="text-decoration: underline;"><a href="http://www.htaccesstools.com/htpasswd-generator/">outils en ligne</a></span></span> qui génèrent cette paire facilement.</p>
<p>Voici la ligne encryptee pour l&rsquo;utilisateur : « anis » et mot de passe « anis »</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p643code18'); return false;">View Code</a> SHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p64318"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p643code18"><pre class="shell" style="font-family:monospace;">anis:$apr1$QH3dV/..$HVTNKumUmtCoIxsMMimOo0</pre></td></tr></table></div>

<p style="margin-bottom: 0in;">une fois cette ligne ajoutée au fichier .htpasswd, ajoutez ce qui suit a votre fichier .htaccess:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p643code19'); return false;">View Code</a> SHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p64319"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p643code19"><pre class="shell" style="font-family:monospace;"># Activer l'authentification de base
AuthType Basic
# Ceci est ce qui va etre affiche dans la boite de dialogue d'authentification
AuthName &quot;Access to the Hidden Files&quot;
# Editer ceci pour le chemin absolu au fichier .htpasswd
AuthUserFile /chemin/absolu/.htpasswd
# Ceci permet a un utilisateur valide dans le fichier .htpasswd d'acceder a la ressource
Require valid-user</pre></td></tr></table></div>

<p style="margin-bottom: 0in;"><span>Ces commandes sont bien commentées. Le seul défi ici est de mettre le bon chemin pour votre .htpasswd. Une bonne pratique est de le mettre dans un répertoire externe aux répertoires qu&rsquo;Apache sert, afin que les utilisateurs mal intentionnés ne puissent pas avoir accès au fichiers .htaccess et a son contenu.</span></p>
<p style="margin-bottom: 0in;">
<p style="margin-bottom: 0in;"><span>Voici la boite de dialogue qui s&rsquo;affiche en accédant au répertoire<br />
</span></p>
<p style="margin-bottom: 0in;"><a rel="attachment wp-att-654" href="http://www.berejeb.com/2009/08/bien-comprendre-les-htaccess/example-3-1/"><img class="aligncenter size-medium wp-image-654" title="example-3-1" src="http://www.berejeb.com/wp-content/uploads/2009/08/example-3-1-300x82.png" alt="example-3-1" width="300" height="82" /></a></p>
<p style="margin-bottom: 0in;"><span>une fois vous saisissez les bons accès – ici anis anis – voici le résultat : </span></p>
<p style="margin-bottom: 0in;"><a rel="attachment wp-att-655" href="http://www.berejeb.com/2009/08/bien-comprendre-les-htaccess/example-3-2/"><img class="aligncenter size-medium wp-image-655" title="example-3-2" src="http://www.berejeb.com/wp-content/uploads/2009/08/example-3-2-300x196.png" alt="example-3-2" width="300" height="196" /></a></p>
<p style="margin-bottom: 0in;">
<p style="margin-bottom: 0in;"><span>L&rsquo;authentification de base est une solution simple. Mais ce n&rsquo;est pas une solution compl</span><span>ête. Les mots de passe sont encodées en Base64 et envoyées sur le réseau. Si vous voulez une authentification plus sécurisée utilisez plutôt le protocole </span><span style="color: #0000ff;"><span style="text-decoration: underline;"><a href="http://en.wikipedia.org/wiki/Https">https</a></span></span><span>.</span></p>
<p style="margin-bottom: 0in;">
<h2 style="margin-left: 0.5in; text-indent: -0.5in; margin-top: 0in; margin-bottom: 0in;"><span>Entêtes<br />
</span></h2>
<p>Bien que tutoriel suppose que vous ayez des connaissances basiques sur les <span style="color: #0000ff;"><span style="text-decoration: underline;"><a href="http://en.wikipedia.org/wiki/List_of_HTTP_headers">entetes HTTP</a></span></span>., je vais quand même  faire quelques rappels de base. HTTP est un protocole sans état, c&rsquo;est a dire que chaque requête/réponse entre le navigateur et le serveur est indépendante des autres requêtes/réponses. Aussi, avec chaque requête envoyée a partir de votre navigateur au serveur, et chaque réponse    du serveur (Apache par exemple) a votre navigateur, il ya deux sections. Une section contenant des entêtes et une section contenant des données.</p>
<p>Les entêtes des  requêtes spécifient toujours  le fichier qu&rsquo;elles demandent ai serveur (par exemple index.html), les informations d&rsquo;état qu&rsquo;ils devraient donner (les informations de cookie par exemple) ainsi que le type MIME qu&rsquo;elles vont recevoir (par exemple text/html)</p>
<p>Les entêtes  des réponses spécifient, quant a elles, les informations génériques du serveur (Apache, PHP, Perl etc), l&rsquo;encodage du contenu, la longueur, le type MIME. Il existe en effet une multitude d&rsquo;entêtes qui spécifient des détails comme le <a href="http://www.berejeb.com/2009/06/mieux-comprendre-le-cache-www/">Cache Control</a> <span style="color: #ff0000;"> </span> , les redirections, les codes d&rsquo;état (le code 404 par exemple pour un fichier non trouve sur le serveur)etc.</p>
<p>Mais qu&rsquo;est ce  que ceci a a voir avec les .htaccess? En effet, vous pouvez utiliser les directives Apache pour redéfinir (ou ajouter) de nouvelles entêtes. Vous pouvez aussi ajouter les fonctionnalités avancées pour la re-écriture des URLs.</p>
<h2 style="margin-top: 0in; margin-bottom: 0.08in;"><span>Un exemple utilisant la reecriture d&rsquo;URLs</span></h2>
<p style="margin-bottom: 0in;"><span>Je vais essayer de parler plus en profondeur de l&rsquo;URL rewriting dans un article a part, mais j&rsquo;expliquerai sommairement quelques regles relatifs a notre exemple</span></p>
<h3 style="margin-top: 0in; margin-bottom: 0.08in;"><span>Exemple : Interdire l&rsquo;acces distant aux ressources</span></h3>
<p>Ceci est communément appelée en anglais : <a href="http://en.wikipedia.org/wiki/Inline_linking">Hotlinking</a>, ou encore inline linking. C&rsquo;est quand un site web effectue un lient directement a une ressource sur un autre site. Ceci coûte au site de la bande passante pour servir l&rsquo;image sur le site demandeur. Ceci peut être un vrai problème pour les sites populaires de photos.</p>
<p>Il existe plusieurs façons pour fixer ce problème en utilisant les .htaccess.</p>
<p>Voici un exemple de code dans lequel on veut permettre de servir des images a des domaines spécifiques mais pas a tous les sites</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p643code20'); return false;">View Code</a> SHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p64320"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p643code20"><pre class="shell" style="font-family:monospace;"> RewriteEngine on
 RewriteCond %{HTTP_REFERER} !^$
 #liste des domaines qui peuvent acceder l'image
 RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?.site-alloue-1.com [NC]
 RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?.site-alloue-2.com [NC]
 #Affiche No Image quand le site n'a pas le droit
 RewriteRule \.(jpg|png|gif)$ - [NC,F,L]</pre></td></tr></table></div>

<p><span>Essayons de comprendre l&rsquo;exemple ligne par ligne:</span></p>
<ol>
<li>Premièrement, nous devons activer 	l&rsquo;engin de réécriture d&rsquo;URLs dans Apache : <a href="http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html">rewrite 	engine</a> . Ceci  nous permettra de rediriger la requête de 	l&rsquo;utilisateur.</li>
<li>Ensuite, en utilisant la directive 	<a href="http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteCond">RewriteCond</a> , nous allons spécifier nos règles de réécriture. RewriteCond prend 	deux arguments: <em><strong>laChaine</strong></em> et <em><strong>laRegle</strong></em>. 	LaChaine est la chaine sur laquelle nous voulons tester notre règle 	laRegle (en utilisant les expressions régulières). <strong>${HTTP_REFERER}</strong> est une variable fournie par Apache qui contient le domaine de 	provenance de la requête. Dans ce cas, nous voulons allouer les requêtes ayant des HTTP REFERERs nuls afin de protéger les 	utilisateurs qui sont sur un serveur proxy qui envoie des referers 	nuls.</li>
<li>Ensuite, nous allons spécifier les 	domaines allouees a lier nos images en utilisant toujours la même 	syntaxe, en spécifiant cette fois des URLs. Le flag <strong>[NC]</strong> a la fin de la commande indique a l&rsquo;engin d&rsquo;ignorer la casse. Vous 	pouvez ajouter des lignes selon vos besoin.</li>
<li>Finalement, la dernière ligne utilise la directive  	<a href="http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteRule">RewriteRule</a> dans le cas échéant. Cette directive prend deux arguments <strong>Modele 	et</strong> <strong>Substitution</strong>, Pattern est une 	expression régulière est Substitution est ce par quoi on veut 	remplacer les parties concordantes. Dans ce cas nous sommes en train 	d&rsquo;analyser les urls finissant avec jpg, png, et gif; Si on en 	trouve, nous substituons par rien. Désormais, nous utilisant le flag 	 <strong>NC</strong> on indique d&rsquo;ignorer la casse, le flag <strong>F</strong> quand a lui, envoie une erreur 403 « forbidden » a 	l&rsquo;utilisateur, le flag <strong>L</strong> indique a l&rsquo;engin d&rsquo;arrêter la réécriture, donc les autres règles ne seront pas appliquées.</li>
</ol>
<p>Ceci a l&rsquo;air simple, mais peut être que nous serions intéressés a dire a l&rsquo;utilisateur explicitement que nous ne voulons pas qu&rsquo;ils fassent un lien direct a nos images. Ce que nous pouvons faire donc c&rsquo;est au lieu d&rsquo;envoyer une erreur 403, nous allons rediriger tous les requêtes non permises a une image par défaut indiquant que le lien est interdit. Remplaçons la dernière ligne par ce qui suit :</p>
<p>#Afficher une image alternative<br />
RewriteRule \.(jpg|png|gif)$ http://www.votreserveur/img/nonpermis.jpeg [NC,R,L]</p>
<p><span>Le dernier flag <strong>R </strong><span style="font-weight: normal;">qui a remplacé </span><strong>F </strong><span style="font-weight: normal;">indique la redirection. </span></span></p>
<p><span><span style="font-weight: normal;">Attention ici! Vous remarquez l&rsquo;utilisation de .jpeg (ancienne extension de jpg). Ceci est mis exprès, du fait que si votre lien finira par .jpg (ou .png ou .gif), ceci va </span><strong>envoyer</strong><span style="font-weight: normal;"> </span><strong>le serveur dans une boucle infinie! </strong><span style="font-weight: normal;">Vous pouvez aussi utiliser n&rsquo;importe quelle autre extension, .php par exemple.</span></span></p>
<h2 style="margin-top: 0in; margin-bottom: 0.08in;"><span>Conclusion</span></h2>
<p><span><span style="font-weight: normal;">Dans cet article j&rsquo;ai essay</span></span>é<span><span style="font-weight: normal;"> d&rsquo;expliquer avec un certain niveau de detail quelques directives apache basiques. J&rsquo;essayerai de parler un peu plus dans un prochain article de la réécriture d&rsquo;URLs.</span></span></p>
<h2><a href="http://www.berejeb.com/sources/htaccess.zip"><span><span style="font-weight: normal;">Telecharger les fichiers sources </span></span></a></h2>
<h2><span><span style="font-weight: normal;">References </span></span></h2>
<p><span><span style="font-weight: normal;"><a href="http://www.amazon.com/Pro-Apache-Third-Experts-Voice/dp/1590593006"><img class="size-thumbnail wp-image-672 alignleft" title="proapache" src="http://www.berejeb.com/wp-content/uploads/2009/08/proapache-150x150.jpg" alt="proapache" width="135" height="135" /></a>La bible d&rsquo;Apache : <a title="Acheter Pro Apache" href="http://www.amazon.com/Pro-Apache-Third-Experts-Voice/dp/1590593006" target="_blank">Pro Apache</a> , un livre Excellent!<br />
</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.berejeb.com/2009/08/bien-comprendre-les-htaccess/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
