.htaccess : comment ne plus l’utiliser sur son serveur dédié

On prend souvent l’habitude d’utiliser les fichiers .htaccess sur les serveurs mutualisés. Or il n’y a plus aucune raison de les utiliser sur un dédié. En effet, les fichiers .htaccess n’existent que pour permettre aux utilisateurs qui ne sont pas administrateur du serveur de faire des changements de configuration. Donc lorsqu’on a son dédié, plus besoin de .htaccess ! Il faut remplacer tous les .htaccess par des directives dans les fichiers de configuration d’Apache.

Pourquoi ?

Quel est l’intérêt de s’en passer puisque ça marche très bien avec ? Il y a trois raisons :

La rapidité. Pour prendre en compte les fichiers .htaccess, le serveur doit avoir l’option AllowOverride d’activée. Il va donc chercher à chaque chargement de fichier les fichiers .htaccess dans toute l’arborescence. Cela prend du temps. De plus le fichier .htaccess est chargé à chaque fois ce qui fait également perdre du temps.

La sécurité. La directive AllowOverride All permet à l’aide d’un fichier .htaccess de modifier localement la configuration du serveur. Si on peut éviter cette souplesse de configuration la sécurité n’en sera que meilleure.

La maintenance. En supprimant tous les fichiers .htaccess, on peut regrouper toutes les directives dans un même fichier de conf. Cela simplifie grandement la maintenance des règles de ré-écriture par exemple.

Comment ?

Il faut remplacer un à un les fichiers .htaccess par une section Directory dans un fichier de conf de apache (/etc/apache2/apache2.conf par exemple, ou le fichier de conf du virtualHost).
Si par exemple on a un fichier .htaccess dans le répertoire /var/www/monsite.fr qui contient les directives suivantes :

RewriteCond %{HTTP_HOST} ^monsite\.fr [NC]
RewriteRule (.*) http://www.monsite.fr/$1 [QSA,R=301,L]

Il suffit de supprimer ce fichier .htaccess et de rajouter ce bloc dans un fichier de conf d’Apache :

‹Directory /var/www/monsite.fr›
   RewriteCond %{HTTP_HOST} ^monsite\.fr [NC]
   RewriteRule (.*) http://www.monsite.fr/$1 [QSA,R=301,L]
‹/Directory›

Lorsqu’on a remplacé tous les fichiers .htaccess, on peut ajouter la directive :

AllowOverride None

dans une section Directory. Cette directive est par défaut à All. Par exemple, si j’ai remplacé tous les fichiers .htaccess de monsite.fr, je rajoute la directive comme ceci :

‹Directory /var/www/monsite.fr›
   AllowOverride None
   ...
‹/Directory›

Comme ça, Apache ne perdra plus de temps à aller chercher les fichiers .htaccess. De plus la configuration est chargée une seule fois au démarrage d’Apache et plus à chaque requête sur un fichier.

Sources

Apache.org – Utilisation du .htaccess

Minifier le CSS et le JS

Aperçu de CleanCss.com

Minifier son code CSS ou Javascript permet d’alléger le poids des fichiers envoyés par le serveur, et donc d’avoir une page qui se charge plus rapidement. J’ai une préférence pour les minifieurs peu intrusifs, c’est-à-dire qui enlève les espaces, les commentaires et font des modifications basiques. Cela évite d’avoir des mauvaises surprises, mais bien sur le gain n’est que de l’ordre de 25%.

Il est possible d’utiliser en local ou sur le serveur un programme comme YUI Compressor pour faire cela. Mais je me suis limité à une minification en ligne avec ces deux sites :

À chaque fois que je modifie un fichier js ou css, je le fais passer par l’un de ces outils avant de l’envoyer sur le serveur en production.

PS : en cas de perte du fichier non-compressé, il est possible de faire le processus inverse avec le compresseur CSS. Et pour le js, il est possible d’utiliser un service de « beautification » comme par exemple jsbeautifier.org.