Optimiser son fichier Htaccess sous WordPress

17 1949

Aujourd’hui nous allons voir comment optimiser son fichier Htaccess sous wordpress. Je vous offre un fichier tout prêt à l’emploi en bas de page, à transférer sur votre FTP. Comme vous le savez, le temps de chargement est très important pour un site.

Fichier Htaccess ?

Le fichier Htaccess permet de communiquer avec son serveur, en lui indiquant quelques modifications à faire.

Par exemple, il y a peu, quand j’ai migré business-wordpress.com j’ai fait appel à une fonction pour indiquer à mon serveur de faire une redirection dite permanente vers cree1site.com

Maintenant nous allons voir comment optimiser le temps de chargement de votre installation wordpress, grâce à ce petit fichier.

Optimiser son Htaccess sous wordpress

Tout d’abord, allez chercher votre fichier htacess sur votre hébergement, et planquez une copie dans un coin au cas où.

Maintenant, nous allons voir les différentes étapes et les codes à y ajouter en fonction de celles ci.

Compression Gzip via Mod_Gzip

Mod_Gzip plus performant (car fonctionne avec apache 1.x qui lui n’est pas compatible en mod_deflate)

– Accélérer le temps de chargement de votre site
– Réduire la bande passante utilisée

RewriteEngine on
#Check to see if browser can accept gzip files. If so and we have it – serve it!
ReWriteCond %{HTTP:accept-encoding} gzip
RewriteCond %{HTTP_USER_AGENT} !Safari
#make sure there’s no trailing .gz on the url
ReWriteCond %{REQUEST_FILENAME} !^.+.gz$
#check to see if a .gz version of the file exists.
RewriteCond %{REQUEST_FILENAME}.gz -f
#All conditions met so add .gz to URL filename (invisibly)
RewriteRule ^(.+) $1.gz [QSA,L]
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_keep_workfiles No
mod_gzip_can_negotiate Yes
mod_gzip_add_header_count Yes
mod_gzip_send_vary Yes
mod_gzip_command_version ‘/mod_gzip_status’
mod_gzip_min_http 1000
mod_gzip_minimum_file_size 300
mod_gzip_maximum_file_size 512000
mod_gzip_maximum_inmem_size 60000
mod_gzip_handle_methods GET POST
mod_gzip_temp_dir /tmp
mod_gzip_item_include file .html$
mod_gzip_item_include file .php$
mod_gzip_item_include file .pl$
mod_gzip_item_include file .rb$
mod_gzip_item_include file .py$
mod_gzip_item_include file .cgi$
mod_gzip_item_include file .css$
mod_gzip_item_include file .js$
mod_gzip_item_include mime ^application/javascript$
mod_gzip_item_include mime ^application/x-javascript$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^httpd/unix-directory$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include handler ^server-status$
mod_gzip_item_include handler ^server-info$
mod_gzip_item_include handler ^application/x-httpd-php
mod_gzip_item_exclude mime ^image/.*
</IfModule>

Mettre en Cache et optimisation headers

Expire headers

– Indique les types de fichiers qui peuvent rester en cache sur un navigateur sans que celui ci n’ait besoin de vérifier la validité du cache.
– Diminue les requêtes de votre site.

# BEGIN Expire headers
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault « access plus 7200 seconds »
ExpiresByType image/jpg « access plus 2592000 seconds »
ExpiresByType image/jpeg « access plus 2592000 seconds »
ExpiresByType image/png « access plus 2592000 seconds »
ExpiresByType image/gif « access plus 2592000 seconds »
AddType image/x-icon .ico
ExpiresByType image/ico « access plus 2592000 seconds »
ExpiresByType image/icon « access plus 2592000 seconds »
ExpiresByType image/x-icon « access plus 2592000 seconds »
ExpiresByType text/css « access plus 2592000 seconds »
ExpiresByType text/javascript « access plus 2592000 seconds »
ExpiresByType text/html « access plus 7200 seconds »
ExpiresByType application/xhtml+xml « access plus 7200 seconds »
ExpiresByType application/javascript A259200
ExpiresByType application/x-javascript « access plus 2592000 seconds »
ExpiresByType application/x-shockwave-flash « access plus 2592000 seconds »
</IfModule>
# END Expire headers

Cache-control

Détermine la durée de la mise en Cache

# BEGIN Cache-Control Headers
<IfModule mod_headers.c>
<FilesMatch « \.(ico|jpe?g|png|gif|swf|css|gz)$ »>
Header set Cache-Control « max-age=2592000, public »
</FilesMatch>
<FilesMatch « \.(js)$ »>
Header set Cache-Control « max-age=2592000, private »
</FilesMatch>
<filesMatch « \.(html|htm)$ »>
Header set Cache-Control « max-age=7200, public »
</filesMatch>
# Disable caching for scripts and other dynamic files
<FilesMatch « .(pl|php|cgi|spl|scgi|fcgi)$ »>
Header unset Cache-Control
</FilesMatch>
</IfModule>
# END Cache-Control Headers

Le Etag

Le eTag permet de dire à votre serveur qu’une page a été modifiée, mais ce n’est pas forcement nécessaire puisqu’on va demander au serveur de vérifier manuellement, on va donc réduire le nombre de requête et de bande passante.

# KILL THEM ETAGS
Header unset ETag
FileETag none

Il faut bien sûr protéger votre fichier htaccess, et pour ce faire, voici le code

# protect the htaccess file
<files .htaccess>
order allow,deny
deny from all
</files>

Protection de la lecture des répertoires

Évite que vos visiteurs consultent les fichiers qui ne contiennent pas de fichiers index (important pour éviter qu’un hacker trouve une faille.

# protection de la lecture des répertoires
Options -Indexes
Attention, n’oubliez surtout pas de conserver ceci:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule># END WordPress
Voilà maintenant que chaque code est détaillé, voici un fichier htaccess prêt à l’emploi à transférer directement dans votre FTP.

Téléchargez le et dézippez le, ensuite, placer le fichier suivant dans votre ftp, à la racine de votre site, en remplacement de celui existant.

Pour télécharger votre fichier, cliquez ici

>> Fichier htaccess optimiser sous wordpress <<

Merci à seomix pour son partage.

Et vous, comment avez vous gagné en efficacité ?

17 Commentaires

  1. Salut,

    Je viens de l’appliquer, j’attends de voir d’ici quelque jours si ça joue sur mes perfs ou pas. En tout cas bon boulot, et c’est bien détaillé.

    Par contre étant chez ovh, j’ai du rajouter cette ligne : SetEnv PHP_VER 5

    • Hello

      Oui en effet les lignes sont génériques, bien tester avant et faire une sauvegarde du htaccess d’origine. Ce code viens de Seomix qui lui même l’a eu de… donc aucun soucis c’est une valeur sûre ^^

    • C’est un peu pour ça que je l’ai cité en bas d’article et comme Daniel Roch le dis lui aussi:

      « En ce qui concerne mes sources, je ne les ai pas toutes retrouvées…
      Mon htaccess a évolué au fur et à mesure des mois, et chaque bout de code a été pris à droite à gauche. . »

      Mais je laisse ton lien optimisé quand même malgré ça ne t’en fais pas ^^

    • Hello, rien d ironique ds mon commentaire, désolé si tu l as pris comme ça. Daniel Roch a tweeté le sien ce matin et toi tu en as parlé dans ta newsletter qqes heures après. Je trouve vraiment l’article sympa!

    • Le principal c’est que ça t’a plu et j’espère que ça va t’aider pour ton site.

  2. Hello, merci pour cet article, par contre, en appliquant le fichier .htacess tel quel, j’ai un message error 500, y at’il une manip à faire avant d’utiliser ce fichier?
    Merci d’avance.

    • Si tu tourne sous WordPress, vérifie que ton fichier contiens :
      # BEGIN WordPress




      # END WordPress

  3. Bonjour,
    est-il possible quand je tape -http://www.monsite.com/blog il m’affiche la page -http://www.monsite.com/ sans faire une redirection
    merci

  4. Je relance le sujet car très intéressant pour tout blogueur.

    J’ai une configuration un peu spécial sur mon blog qui me fait me poser des questions… du coup peut-être pourras-tu me répondre Rodrigue.

    WordPress n’est pas installé à la racine de mon blog, mais dans un dossier wp/
    Du coup j’ai un premier htaccess à la racine puis un second dans le dossiers wp/

    Quel fichier dois-je optimisé ? Le 1er, le 2nd ou tout simplement les deux ?

    Merci d’avance

  5. Bjr

    je trouve cela super ce site, un lien donné par une autre personne, mais comme je suis une grande débutante, est ce que je peux simplement copié l’un à la suite de l’autre ce qui est ecrit où dois je avant faire autre choses, je n’y connais rien j’ai même pas les bases pour capter en réalité ce qu’est un fichier de genre, j’ai une tres vague idée mais sans plus

    En fait je me suis permise de laisser ce commentaire car j’arrive pas à comprendre pourquoi dans ce fichier j’ai 20 fois ces lignes

    # END WordPress
    # BEGIN WordPress

    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ – [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    De plus j’ai installé total cache puis je mettre ce fichier à la racine sans probleme ???

    merci pour la réponse

    • Si tu débutes total cache est peut être un peu lourd à prendre en main, utilises plutôt fastest cache, très simple a configurer et tout aussi efficace :).
      j’ai mis en liens un article sur les plugins wordpress encore une fois si tu débutes ça pourrais t’aider.

Réagis