Depuis son lancement en 2005, Joomla est reconnu comme étant l'un des meilleurs CMS pour créer n'importe quel type de site Web. Et depuis la sortie de Joomla 5, ce CMS offre toujours plus de sécurité, de robustesse et de polyvalence.
Parmi toutes les fonctionnalités nativement présentes dans Joomla 5, le fichier .htaccess
est sans doute le moins cité et pourtant, c'est l'un des plus utiles. En effet, il permet à la fois d'améliorer l'optimisation pour le référencement et la sécurité de votre site Web. Dans ce guide complet, je vous invite à plonger dans les secrets de ce fichier .htaccess
de Joomla afin que vous puissiez, vous aussi, exploiter tout son potentiel.
Voici le copieux programme que je vous propose:
Introduction au fichier .htaccess
Commençons par les présentations.
Le fichier .htaccess (pour Hypertext Access) est un fichier de configuration utilisé par les serveurs Web de type Apache. Sans entrer trop dans les détails techniques pour le moment, retenez qu'en ajoutant certaines instructions, ce fichier permet d'effectuer des modifications et des ajustements au niveau du répertoire.
Pour faire simple, considérez ce fichier comme une interface de communication entre le serveur et votre site Web.
Où se trouve le fichier .htaccess de Joomla 5?
Pour les nouveaux utilisateurs de Joomla ou pour les utilisateurs réguliers qui l'aurait oublié, localiser le fichier .htaccess
peut être un peu déroutant. Alors, éclaircissons ce mystère.
Lorsque vous téléchargez Joomla 5 depuis le site officiel et que vous le décompressez, vous découvrez de nombreux dossiers et fichiers. Il s'agit des fichiers de base nécessaires au bon fonctionnement de Joomla. Parmi tous les fichiers se trouve un fichier nommé htaccess.txt
. Ce fichier est essentiel et doit se trouver à la racine de votre site Web. Mais avant de plonger dans les fonctionnalités de .htaccess
, il y a une petite manipulation à effectuer.
Vous devez d'abord renommer ce fichier htaccess.txt
en .htaccess
afin d'activer ses fonctionnalités. Ce n'est qu'après l'avoir renommé que ce fichier jouera son rôle dans la structure de Joomla et commencera à régir les directives du site Web.
Que contient le fichier .htaccess par défaut?
Maintenant, nous allons voir ce que contient ce fichier. Le fichier .htaccess
par défaut de Joomla 5 contient déjà plusieurs règles et directives. Ces règles ont été soigneusement élaborées afin de garantir une fonctionnalité et une sécurité optimales dès la mise en service de Joomla. Cependant, il est toujours possible d'apporter des améliorations et des personnalisations en fonction de nos besoins.
##
# @package Joomla
# @copyright (C) 2005 Open Source Matters, Inc. <https://www.joomla.org>
# @license GNU General Public License version 2 or later; see LICENSE.txt
##
##
# READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE!
#
# The line 'Options +FollowSymLinks' may cause problems with some server configurations.
# It is required for the use of Apache mod_rewrite, but it may have already been set by
# your server administrator in a way that disallows changing it in this .htaccess file.
# If using it causes your site to produce an error, comment it out (add # to the
# beginning of the line), reload your site in your browser and test your sef urls. If
# they work, then it has been set by your server administrator and you do not need to
# set it here.
##
## MISSING CSS OR JAVASCRIPT ERRORS
#
# If your site looks strange after enabling this file, then your server is probably already
# gzipping css and js files and you should comment out the GZIP section of this file.
##
## OPENLITESPEED
#
# If you are using an OpenLiteSpeed web server then any changes made to this file will
# not take effect until you have restarted the web server.
##
## Can be commented out if causes errors, see notes above.
Options +FollowSymlinks
Options -Indexes
## No directory listings
<IfModule mod_autoindex.c>
IndexIgnore *
</IfModule>
## Suppress mime type detection in browsers for unknown types
<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
</IfModule>
## Protect against certain cross-origin requests. More information can be found here:
## https://developer.mozilla.org/en-US/docs/Web/HTTP/Cross-Origin_Resource_Policy_(CORP)
## https://web.dev/why-coop-coep/
#<IfModule mod_headers.c>
# Header always set Cross-Origin-Resource-Policy "same-origin"
# Header always set Cross-Origin-Embedder-Policy "require-corp"
#</IfModule>
## Disable inline JavaScript when directly opening SVG files or embedding them with the object-tag
<FilesMatch "\.svg$">
<IfModule mod_headers.c>
Header always set Content-Security-Policy "script-src 'none'"
</IfModule>
</FilesMatch>
## These directives are only enabled if the Apache mod_rewrite module is enabled
<IfModule mod_rewrite.c>
RewriteEngine On
## Begin - Rewrite rules to block out some common exploits.
# If you experience problems on your site then comment out the operations listed
# below by adding a # to the beginning of the line.
# This attempts to block the most common type of exploit `attempts` on Joomla!
#
# Block any script trying to base64_encode data within the URL.
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Block any script that includes a <script> tag in URL.
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Block any script trying to set a PHP GLOBALS variable via URL.
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block any script trying to modify a _REQUEST variable via URL.
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Return 403 Forbidden header and show the content of the root home page
RewriteRule .* index.php [F]
#
## End - Rewrite rules to block out some common exploits.
## Begin - Custom redirects
#
# If you need to redirect some pages, or set a canonical non-www to
# www redirect (or vice versa), place that code here. Ensure those
# redirects use the correct RewriteRule syntax and the [R=301,L] flags.
#
## End - Custom redirects
##
# Uncomment the following line if your webserver's URL
# is not directly related to physical file paths.
# Update Your Joomla! Directory (just / for root).
##
# RewriteBase /
## Begin - Joomla! core SEF Section.
#
# PHP FastCGI fix for HTTP Authorization, required for the API application
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# -- SEF URLs for the API application
# If the requested path starts with /api, the file is not /api/index.php
# and the request has not already been internally rewritten to the
# api/index.php script
RewriteCond %{REQUEST_URI} ^/api/
RewriteCond %{REQUEST_URI} !^/api/index\.php
# and the requested path and file doesn't directly match a physical file
RewriteCond %{REQUEST_FILENAME} !-f
# and the requested path and file doesn't directly match a physical folder
RewriteCond %{REQUEST_FILENAME} !-d
# internally rewrite the request to the /api/index.php script
RewriteRule .* api/index.php [L]
# -- SEF URLs for the public frontend application
# If the requested path and file is not /index.php and the request
# has not already been internally rewritten to the index.php script
RewriteCond %{REQUEST_URI} !^/index\.php
# and the requested path and file doesn't directly match a physical file
RewriteCond %{REQUEST_FILENAME} !-f
# and the requested path and file doesn't directly match a physical folder
RewriteCond %{REQUEST_FILENAME} !-d
# internally rewrite the request to the index.php script
RewriteRule .* index.php [L]
#
## End - Joomla! core SEF Section.
</IfModule>
## These directives are only enabled if the Apache mod_rewrite module is disabled
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
# When Apache mod_rewrite is not available, we instruct a temporary redirect
# of the start page to the front controller explicitly so that the website
# and the generated links can still be used.
RedirectMatch 302 ^/$ /index.php/
# RedirectTemp cannot be used instead
</IfModule>
</IfModule>
## GZIP
## These directives are only enabled if the Apache mod_headers module is enabled.
## This section will check if a .gz file exists and if so will stream it
## directly or fallback to gzip any asset on the fly
## If your site starts to look strange after enabling this file, and you see
## ERR_CONTENT_DECODING_FAILED in your browser console network tab,
## then your server is already gzipping css and js files and you don't need this
## block enabled in your .htaccess
<IfModule mod_headers.c>
# Serve gzip compressed CSS files if they exist
# and the client accepts gzip.
RewriteCond "%{HTTP:Accept-encoding}" "gzip"
RewriteCond "%{REQUEST_FILENAME}\.gz" -s
RewriteRule "^(.*)\.css" "$1\.css\.gz" [QSA]
# Serve gzip compressed JS files if they exist
# and the client accepts gzip.
RewriteCond "%{HTTP:Accept-encoding}" "gzip"
RewriteCond "%{REQUEST_FILENAME}\.gz" -s
RewriteRule "^(.*)\.js" "$1\.js\.gz" [QSA]
# Serve correct content types, and prevent mod_deflate double gzip.
RewriteRule "\.css\.gz$" "-" [T=text/css,E=no-gzip:1]
RewriteRule "\.js\.gz$" "-" [T=text/javascript,E=no-gzip:1]
<FilesMatch "(\.js\.gz|\.css\.gz)$">
# Serve correct encoding type.
Header set Content-Encoding gzip
# Force proxies to cache gzipped &
# non-gzipped css/js files separately.
Header append Vary Accept-Encoding
</FilesMatch>
</IfModule>
Si vous ne trouvez pas le fichier.htaccess?
Il arrive parfois - et malgré tous vos efforts - que le fichier .htaccess
soit absent du dossier racine de Joomla. Avant que la panique ne s'installe, sachez qu'il existe des solutions simples pour résoudre ce problème.
Voici ce que vous pouvez faire :
En utilisant un client FTP tel que FileZilla: Si vous pouvez accéder aux fichiers de votre site Web via un client FTP comme FileZilla, la solution est assez simple :
- Dans le dossier racine contenant votre site Web, déposez un nouveau fichier
.txt
et nommez-le.htaccess
. - Ouvrez ce fichier à l'aide de l'éditeur de texte de votre choix.
- Copiez/collez le contenu par défaut du fichier
.htaccess
dans votre fichier. - Enregistrez votre saisie et refermez le fichier. Votre site Joomla dispose maintenant de son fichier
.htaccess
.
En utilisant cPanel: Pour celles et ceux qui gèrent leur site Web via le cPanel de leur hébergeur, le processus est légèrement différent:
- Une fois que vous êtes dans le gestionnaire de fichiers de cPanel, recherchez le bouton « Paramètres » généralement situé dans le coin supérieur droit.
- Cliquez dessus pour faire apparaitre une fenêtre modale.
- Dans cette fenêtre, vérifiez que l'option “Afficher les fichiers cachés” est bien cochée.
- Enregistrez vos changements éventuels et revenez au gestionnaire de fichiers. Votre fichier
.htaccess
doit maintenant être visible.
Optimiser son référencement avec le fichier .htaccess
En exploitant toute la puissance du fichier .htaccess
, vous pouvez donner un sérieux coup de pouce au référencement de votre site Web Joomla 5. Voici quelques exmples qui vous permettent d'en tirer le meilleur parti afin d'optimiser votre site Web Joomla pour le référencement:
#1 Supprimer index.php de vos URLs:
La presence de la mention index.php
dans vos URLs n'est pas seulement inesthétique, mais cela peut également entraver vos efforts en matière de référencement. Pour rendre vos URLs Joomla plus propres pour les moteurs de recherche et plus conviviales pour les internautes, vous pouvez utiliser votre fichier .htaccess
pour supprimer index.php.
RewriteEngine On
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^(.*?)index\.php[^/] /$1 [L,R=301,NC]
#2 Rediriger une ancienne URL vers une nouvelle:
Au fil du temps, lorsque vous mettez à jour ou que vous modifiez votre site Web, certaines URLs peuvent devenir obsolètes. Pour éviter de rediriger les utilisateurs et les moteurs de recherche vers une page 404, il est préférable de les envoyer vers la nouvelle page grâce à une redirection 301.
RewriteEngine On
RewriteRule ^ancienne-url$ /nouvelle-url [L,R=301]
#3 Avec www ou sans les www:
Que ce soit pour des raisons d'ordre esthétique ou de cohérence SEO, vous pouvez préférer la version sans les www de votre nom de domaine. Pour rediriger toutes les requêtes www vers la version sans www dans Joomla, vous pouvez ajouter ce qui suit dans votre fichier .htaccess
:
RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.domaine\.fr [NC] RewriteRule ^(.*)$ https://domaine.fr/$1 [L,R=301]
Lorsque vous ajoutez ce code dans votre fichier .htaccess
, tout visiteur accédant à « www.domaine.fr » sera automatiquement redirigé vers « domaine.fr ». Veillez simplement à remplacer « domaine.fr » par votre nom de domaine réel. Cela garantit non seulement la cohérence pour vos utilisateurs, mais évitera également les problèmes potentiels de contenu dupliqué que détestent les moteurs de recherche.
Rôle du fichier .htaccess dans la réécriture d'URLs
Le fichier .htaccess
n'est pas seulement un moyen de configurer le serveur au moyen de directives ; c'est également un outil essentiel qui permet à Joomla de fournir des URLs plus conviviales pour les moteurs de recherche (Search Engine Friendly) et plus lisibles pour les visiteurs.
Les URLs SEF sont importantes à la fois pour la convivialité et le référencement. La réécriture d'URL transforme les structures complèxes en URLs claires, lisibles et mémorisables.
Configurer le SEF dans la configuration globale de Joomla
- Ouvrez le panneau d'administration de Joomla
- Dans le menu latéral de gauche, cliquez sur "Système," puis sur "Configuration Globale."
- Sur cette nouvelle page, vous trouverez les réglages dédiés au SEO dans l'onglet Sites.
- Réécriture d'URL en clair (SEF): si ce n'est pas déjà le cas, réglez ce paramètre sur « Oui ». Cela réécrira toutes vos URLs pour qu'elles soient propres et exemptes de chaînes de requête.
- Réécriture au 'vol' des URL: activer cette fonctionnalité nécessite que le fichier
.htaccess
soit présent à la racine de votre site pour fonctionner. Elle supprime la chaine « index.php » de toutes les URLs de Joomla, la rendant encore plus conviviale. - Enregistrez votre saisie et fermez.
Améliorer la sécurité avec le fichier .htaccess
Au delà du référencement et même si le code de Joomla est nativement déjà très sécurisé, le fichier .htaccess
est sans aucun doute votre plus fidèle allié en matière de sécurité.
#1 Protéger votre panneau d'administration:
Limitez l'accès à votre panneau d'administration Joomla à une (ou plusieurs) adresse IP, la protégeant ainsi contre tout accès non autorisé.
Order Deny,Allow
Deny from all
Allow from xx.xx.xx.xx
#2 Bloquer l'accès aux répertoires:
Empêchez quiconque de consulter le contenu de vos répertoires.
Options -Indexes
L'option Indexes définit si vous pouvez « parcourir » le répertoire ou non. Si indexes est défini sur « + » et que le répertoire ne contient pas de fichier index.html
ou index.php
(ou autre), il affichera alors l'intégralité du contenu du répertoire comme le ferait votre gestionnaire de fichiers.
Boostez votre site avec le fichier .htaccess
La vitesse d'affichage d'un site Web joue un rôle essentiel dans l'expérience utilisateur. Utiliser les bonnes règles dans le fichier .htaccess
permet d'améliorer très significativement les performances et la vitesse d'affichage.
Leverage Browser Caching (mise en cache du navigateur)
L'utilisation de la mise en cache du navigateur peut très nettement améliorer la vitesse de votre site Web, surtout pour les visiteurs récurrents. Voici le code à insérer dans votre fichier .htaccess
pour exploiter cette mise en cache du navigateur:
## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>
## EXPIRES CACHING ##
Activer la Compression Gzip
La compression Gzip permet de réduire de manière significative la taille globale des fichiers de votre site Web size, ceci ayant pour effet d'améliorer le temps de chargement des pages pour vos visiteurs.
Pour activer la compression Gzip avec le fichier .htaccess
, vous devez d'abord vous assurer que le module mod_deflate
est bien activé sur le serveur de votre site Web (normalement oui mais à vérifier avec votre hébergeur). Voici le code que vous devez ajouter à votre fichier .htaccess
:
<IfModule mod_deflate.c>
# Compress HTML, CSS, JavaScript, Text, XML and fonts
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
# Remove browser bugs (only needed for really old browsers)
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
</IfModule>
Lorsque ce code est présent dans le fichier .htaccess
, il compresse les types MIME spécifiés lors de leur diffusion aux navigateurs prenant en charge cette compression.
Important: Effectuez toujours une sauvegarde de votre fichier .htaccess
avant d'y apporter la moindre modification. Testez votre site Web après avoir appliqué vos modifications pour vous assurer que tout fonctionne comme prévu. Si vous rencontrez le moindre problème, vous pourrez revenir à la version de sauvegarde de votre fichier .htaccess
.
Conseils pour bien gérer le fichier .htaccess de Joomla 5
- Faites une sauvegarde avant chaque modification: Avant de vous lancer dans les modifications du fichier
.htaccess
de Joomla, assurez-vous de disposer d'une sauvegarde. Cette précaution vous assure qu'en cas de problème, vous pourrez revenir à la version précédents sans difficulté. - Utilisez un éditeur de texte brut : il est important d'utiliser un éditeur de texte brut lors de la modification du fichier
.htaccess
. Des outils tels que le Bloc-notes de Windows ou TextEdit sur macOS sont parfaits ici. - Testez après chaque modification: Après chaque modification du fichier
.htaccess
, vérifiez toujours si votre site Joomla fonctionne parfaitement. La moindre erreur dans le fichier.htaccess
peut empêcher le fonctionnement du site Web. - Appliquez les mises à jour: Joomla, comme les autres CMS, évolue constamment. Gardez un oeil (ou deux) sur la documentation officielle, sur les groupes de discussions, lisez les annonces officielles pour tirer parti des conseils concernant le fichier
.htaccess
au fur et à mesure de leur apparition.
Problèmes courants et leurs solutions
Il arrive parfois que les modifications apportées au fichier .htaccess
aient des effets de bord indésirables. Rassurez-vous, il existe toujours une solution à chaque problème. Je vous propose de voir maintenant les problèmes les plus fréquents et comment les résoudre.
a) 500 Internal Server Error: cette erreur est très souvent provoquée par une faute de frappe ou une erreur dans le code du fichier .htaccess
. Revenez à votre sauvegarde et réappliquez les modifications étape par étape, en les testant au fur et à mesure.
b) Boucles de redirection: Si votre site n'en finit plus de s'actualiser, il est très probable que des règles conflictuelles soient présentes dans votre fichier .htaccess
. Vérifiez vos redirections et supprimez celles qui seraient redondantes ou conflictuelles.
c) Vous avez toujours des erreurs: Il existe aujourd'hui plusieurs outils gratuits permettant de tester le code contenu dans un fichier .htaccess
.Si vous êtes bloqué.e, ce type d'outils devrait vous sauver la vie.
Conclusion
Le fichier .htaccess
de Joomla est un super héros aux pouvoirs méconnus. En effet, celui-ci travaille en arrière-plan pour améliorer votre référencement, pour renforcer la sécurité et améliorer la vitesse de votre site Web.
J'espère que grâce à cet article, vous en savez plus à son sujet et que vous allez maintenant pouvoir vous en faire un véritable allié, car vous n'allez pas seulement optimiser votre site Web, mais vous allez offrir une expérience plus sûre, plus rapide et plus agréable à vos visiteurs.