<?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>Blackotine &#187; htaccess</title>
	<atom:link href="http://www.blackotine.fr/tag/htaccess/feed" rel="self" type="application/rss+xml" />
	<link>http://www.blackotine.fr</link>
	<description>Blog d&#039;un intégrateur et développeur Web</description>
	<lastBuildDate>Wed, 07 Apr 2010 16:56:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Les fichiers .htaccess, exemples et astuces</title>
		<link>http://www.blackotine.fr/apache/exemples-htaccess</link>
		<comments>http://www.blackotine.fr/apache/exemples-htaccess#comments</comments>
		<pubDate>Sun, 08 Feb 2009 23:39:02 +0000</pubDate>
		<dc:creator>nico</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[htaccess]]></category>

		<guid isPermaLink="false">http://www.blackotine.fr/?p=130</guid>
		<description><![CDATA[Les fichiers .htaccess sont de puissants outils permettant de modifier la configuration du serveur web Apache de manière localisée, pour un site voire, pour un répertoire.
Voici quelques exemples utiles à utiliser sur vos sites.
Attention toutefois, car la moindre erreur de syntaxe provoquera une erreur interne sur le serveur et rendra votre site indisponible.  Pensez [...]]]></description>
			<content:encoded><![CDATA[<p>Les fichiers <a href="http://fr.wikipedia.org/wiki/Htaccess"><strong>.htaccess</strong></a> sont de puissants outils permettant de modifier la configuration du <a href="http://fr.wikipedia.org/wiki/Apache_(logiciel)">serveur web Apache</a> de manière localisée, pour un site voire, pour un répertoire.</p>
<p>Voici quelques exemples utiles à utiliser sur vos sites.<br />
Attention toutefois, car la moindre erreur de syntaxe provoquera une erreur interne sur le serveur et rendra votre site indisponible.  Pensez donc à toujours garder une copie de sauvegarde permettant de revenir en arrière.<span id="more-130"></span></p>
<h3>Création du fichier :</h3>
<p>Il suffit de créer un fichier avec n&#8217;importe quel éditeur de texte et de le nommer <em>.htaccess</em>, sans extension. Sous Windows, il est impossible de créer un fichier .htaccess. Si vous avez des difficultés, vous pouvez utiliser un autre explorateur de fichier comme, par exemple, un logiciel de transfert FTP du type <a href="http://www.filezilla.fr/">Filezilla</a></p>
<p>Ensuite, il faudra mettre ce fichier à la racine d&#8217;un répertoire pour que les règles qu&#8217;il contient s&#8217;appliquent à tous les sous-répertoires.</p>
<h3>Créer une page d&#8217;erreur personnalisée</h3>
<p>Bien souvent, on néglige ces pages par manque de temps ou d&#8217;intérêt. Elles sont pourtant très importantes car elles permettent aux visiteurs de rester sur  le site. On peut alors, par exemple, choisir de le réorienter par le biais d&#8217;un plan de site.</p>
<p>Dans le fichier .htaccess il suffit d&#8217;inscrire ces lignes</p>
<pre class="brush: sql">ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php
</pre>
<h3>Comment faire pour configurer le fuseau horaire sur votre serveur</h3>
<pre class="brush: sql">SetEnv TZ Europe/Paris</pre>
<h3>Bloquer des adresses IP</h3>
<p>Permet d&#8217;empêcher certaines adresses IP d&#8217;accéder à la totalité de votre site ou un répertoire.</p>
<pre class="brush: sql">allow from all
deny from 145.186.14.122
deny from 124.15</pre>
<p>Quand quelqu&#8217;un essaiera d&#8217;accéder à votre site à partir de l&#8217;IP interdite, il verra un message d&#8217;erreur 403 &laquo;&nbsp;accès interdit&nbsp;&raquo;.</p>
<h3>Redirections permanentes</h3>
<p>Très utilisées pour la <acronym title="Search Engine Optimization" lang="uk">SEO</acronym>, les redirections permanentes 301 pour les mauvais ou anciens liens déplacés ou supprimés.</p>
<pre class="brush: sql">Redirect 301 /mapage.html http://www.monsite.com/manouvellepage.html</pre>
<h3>Redirections de domaine</h3>
<p>Pour rediriger chacune des pages d&#8217;un domaine vers la même page sur un autre domaine.</p>
<pre class="brush: sql">RewriteCond %{HTTP_HOST} ^www\.mon-site\.com [NC]
RewriteRule ^(.*)$ http://www.mon-site.fr/$1 [QSA,R=301]</pre>
<h3>E-mail de l&#8217;administrateur du serveur</h3>
<p>Utiliser ce code, pour spécifier l&#8217;adresse e-mail par défaut de l&#8217;administrateur du serveur.</p>
<pre class="brush: sql">ServerSignature EMail
SetEnv SERVER_ADMIN monadresse@monsite.com</pre>
<h3>Protéger ses images</h3>
<p>Utile pour empêcher qu&#8217;une personne ne fasse un lien direct de son site pour afficher des images hébergées sur votre propre serveur. Bien souvent aucune autorisation n&#8217;est demandée et cela pose donc des problèmes de droits, sans compter qu&#8217;il utilise la bande passante de votre serveur.<br />
Le code suivant peut empêcher cela.</p>
<pre class="brush: sql">
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?monsite\.com/ [nc]
RewriteRule .*\.(gif|jpg|png)$ http://www.monsite.com/images/images-de-substitution.jpg [nc]
</pre>
<h3>Rendre tout un site indisponible pour maintenance</h3>
<p>Il est intéressant de pouvoir à tout moment basculer un site en maintenance et être le seul à pouvoir naviguer sur celui-ci.</p>
<pre class="brush: sql">
RewriteEngine on
RewriteRule maintenance\.html - [L]
RewriteCond %{REMOTE_ADDR} !82.288.56.587
RewriteRule .* /maintenance.html [L]
</pre>
<h3>Empêcher le listage des répertoires</h3>
<p>Habituellement, si votre site ne dispose pas d&#8217;une page d&#8217;index par défaut tous les fichiers de ce répertoire sont accessibles aux visiteurs. Pour éviter cela utilisez le code suivant.</p>
<pre class="brush: sql">
Options All -Indexes
</pre>
<h3>Page par défaut</h3>
<p>Vous pouvez définir la page par défaut d&#8217;un répertoire comme vous le souhaitez. Par exemple, dans ce code, la page par défaut est contact.html au lieu de index.html</p>
<pre class="brush: sql">
DirectoryIndex contact.html
</pre>
<h3>Protéger vos répertoires et fichiers</h3>
<p>Vous pouvez créer une demande d&#8217;authentification pour l&#8217;accès à certains fichiers et répertoires. Voici deux exemples de protection par mot de passe, un pour un fichier et l&#8217;autre pour un répertoire. Le fichier .htpasswd est un fichier texte devant contenir sur chacune des ses lignes un nom d&#8217;utilisateur suivi de deux points (:), puis du mot de passe crypté (solution recommandée) ou en clair. Pour crypter le mot de passe, Apache fournit un outil, l&#8217;utilitaire htpasswd accessible dans le sous-répertoire bin d&#8217;Apache. Il est également recommandé de placer ce fichier en dehors de l&#8217;arborescence du site.</p>
<pre class="brush: sql">
# Protéger un  fichier

AuthType Basic
AuthName &amp;quot;Accès restreint&amp;quot;
AuthUserFile /home/path/.htpasswd
Require valid-user

# Protéger un répertoire
AuthType basic
AuthName &amp;quot;Accès restreint&amp;quot;
AuthUserFile /home/path/.htpasswd
AuthGroupFile /dev/null
Require valid-user
</pre>
<h3>Masquer ou afficher les erreurs php</h3>
<p>Par défaut, le valeur du paramètre PHP &laquo;&nbsp;display_errors&nbsp;&raquo; est &laquo;&nbsp;on&nbsp;&raquo;. La plupart du temps ces messages d&#8217;erreurs contiennent des informations sensibles qu&#8217;il est préférable de masquer sur un site en production. Pour masquer les erreurs, ajouter simplement :</p>
<pre class="brush: sql">
php_flag display_errors off
</pre>
<h3>Pour Conclure</h3>
<p>Ce petit fichier est extrêmement pratique et puissant. Le nombre d&#8217;applications possibles est important. Ainsi, j&#8217;éditerai ce billet régulièrement pour y ajouter des exemples utiles. N&#8217;hésitez donc pas à proposer les vôtres.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blackotine.fr/apache/exemples-htaccess/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Compression, cache et optimisation des fichiers javascript et css</title>
		<link>http://www.blackotine.fr/javascript/compression-cache-et-optimisation-des-fichiers-javascript-et-css</link>
		<comments>http://www.blackotine.fr/javascript/compression-cache-et-optimisation-des-fichiers-javascript-et-css#comments</comments>
		<pubDate>Thu, 30 Oct 2008 17:38:25 +0000</pubDate>
		<dc:creator>nico</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[http requests]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.blackotine.fr/?p=66</guid>
		<description><![CDATA[Comment optimiser l&#8217;utilisation de JavaScript en termes de compression, cache, vitesse de chargement sans pour autant se retrouver avec des fichiers illisibles car, sans indentation, sans espaces voire obfusqués. (plusieurs méthodes existent)
Garder un fichier lisible est, selon moi, indispensable pour maintenir son application à jour, la modifier, la corriger et cela d&#8217;autant plus lorsqu&#8217;on travaille [...]]]></description>
			<content:encoded><![CDATA[<p>Comment optimiser l&#8217;utilisation de JavaScript en termes de compression, cache, vitesse de chargement sans pour autant se retrouver avec des fichiers illisibles car, sans indentation, sans espaces voire obfusqués. (<a href="http://www.webinventif.fr/jus-presse/">plusieurs méthodes existent</a>)</p>
<p>Garder un fichier lisible est, selon moi, indispensable pour maintenir son application à jour, la modifier, la corriger et cela d&#8217;autant plus lorsqu&#8217;on travaille en équipe.</p>
<p>Une des solutions est de garder une version non compressée mais cela sous-entend de jongler sans cesse entre plusieurs versions, ce qui n&#8217;est définitivement pas pratique.</p>
<h3>Combine</h3>
<p>La solution qui me semble la plus intéressante est la classe PHP <a href="http://rakaz.nl/extra/code/combine">Combine</a>, simple à utiliser, fiable, gérant la combinaison, la <strong>compression</strong>, la <strong>mise en cache</strong> et les <strong>dates d&#8217;expiration</strong>.<br />
<span id="more-66"></span><br />
Tout d&#8217;abord, Combine <strong>concatène</strong> tous vos fichiers javascript et/ou css et les sert comme un gros fichier. Cela dans le but de <strong>réduire le nombre de requêtes au serveur</strong>.</p>
<p>Il gère également <strong>la compression</strong> en détectant si votre navigateur supporte la compression gzip, si oui, il gzip les données et renvoie la version compressée.  En général, ceci permet de <strong>réduire considérablement la taille du fichier</strong>.</p>
<p>Si vous avez créé un répertoire cache, il va stocker la version gzip générée de vos données. Ainsi pour les futures demandes, il récupére simplement la version mise en cache zippé au lieu de générer le contenu de l&#8217;archive gzip à la volée. Ceci permet de <strong>réduire la charge du serveur</strong>.</p>
<p>Enfin, il vérifie les changements effectués. En effet, la date, l&#8217;heure et la taille du fichier mis en cache est rapidement vérifiée et, si il y a un changement, il sera automatiquement régénéré. Il gère donc parfaitement les en-têtes ce qui permet de mettre ces fichiers à jour et d&#8217;être certain que chacun des visiteurs du site se verra servir la même version du fichier.</p>
<h3>Mise en place</h3>
<p><strong>L&#8217;utilisation est très simple.</strong></p>
<p>Vous devez d&#8217;abord <a href="http://rakaz.nl/projects/combine/combine.phps">télécharger</a> et configurer le script combine.php.</p>
<p>Par défaut, ce script regarde dans les répertoires racines javascript et css de votre site Web, mais si vous utilisez des répertoires différents, vous pouvez changer ces valeurs en haut de combine.php.<br />
Transférer le fichier combine.php à la racine de votre site Web.</p>
<p>Deuxièmement, vous devez créer un répertoire &laquo;&nbsp;cache&nbsp;&raquo; accessible en écriture. Encore une fois, par défaut, ce script va chercher dans le répertoire racine du site Web, mais vous pouvez modifier cette valeur dans combine.php.</p>
<p>Enfin, il vous faut créer ou modifier un fichier .htaccess. Si vous n&#8217;avez pas de .htaccess vous pouvez le créer à la racine de votre site Web et ajouter les lignes suivantes.<br />
Si vous avez déjà un .htaccess vous pouvez simplement ajouter les lignes suivantes dans le fichier :</p>
<pre class="brush: sql">RewriteEngine On
RewriteBase /
RewriteRule ^css/(.*\.css) /combine.php?type=css&amp;amp;files=$1
RewriteRule ^js/(.*\.js) /combine.php?type=javascript&amp;amp;files=$1</pre>
<p>Pour finir, dans vos pages remplacez tous vos appels javascript de la forme :</p>
<pre class="brush: jscript">&lt;script src=&quot;js/mootools-1.2-core.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;js/mootools-1.2-more.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;</pre>
<p>par :</p>
<pre class="brush: jscript">&lt;script src=&quot;js/mootools-1.2-core.js,mootools-1.2-more.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;</pre>
<p>Idem pour le css, remplacer :</p>
<pre class="brush: css">
&lt;link href=&quot;css/reset.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;
&lt;link href=&quot;css/layout.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;</pre>
<p>par :</p>
<pre class="brush: css">
&lt;link href=&quot;css/reset.css,layout.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;</pre>
<p>Et voilà ! Plutôt simple et terriblement efficace.<br />
Par contre, un petit désavantage, si vous avez l&#8217;habitude d&#8217;utiliser <a href="http://getfirebug.com/">Firebug</a> pour débugger, forcement, le numéro de ligne indiqué pour les propriétés css, par exemple, ne correspond à rien dans votre fichier local, puisque tous les fichiers css sont combinés.<br />
Je pense que l&#8217;installation de cette solution doit donc intervenir en fin de production, juste avant livraison.</p>
<h3>Autres solutions</h3>
<p>Il existe une autre classe qui semble assez similaire, <a href="http://code.google.com/p/minify/">Minify!</a>, elle permet en plus de la gestion du cache et de la compression, de supprimer les espaces blancs et les commentaires.</p>
<p>Si vous avez plus d&#8217;infos sur Minify ou sur d&#8217;autres solutions, n&#8217;hésitez pas !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blackotine.fr/javascript/compression-cache-et-optimisation-des-fichiers-javascript-et-css/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
