Exemples de .htaccess pour les CMS populaires : comment restaurer le fichier par défaut

Le fichier .htaccess est un fichier de configuration utilisé sur les serveurs web Apache pour gérer les paramètres du site web sans avoir accès à la configuration principale du serveur. Avec lui, vous pouvez activer les redirections, restreindre l'accès, configurer des URL optimisées pour le SEO, mettre en place la mise en cache, et bien plus encore, directement depuis la racine de votre site ou l'un de ses répertoires.
De nombreux CMS créent automatiquement ce fichier lors de l'installation ou incluent un exemple dans la distribution.
Si vous travaillez avec l'hébergement, surtout sur Apache, il est important de savoir à quoi ressemble le fichier .htaccess par défaut pour les différents CMS. Cela vous aide à :
-
Vérifier que tout est correct après l'installation ;
-
Restaurer le fichier s'il a été accidentellement supprimé ;
-
Comprendre quelles règles le système utilise « dès la sortie de la boîte ».
Où se trouve .htaccess
Le fichier .htaccess se trouve généralement dans le répertoire racine du site, par exemple :
/var/www/site.com/public_html/.htaccess
Si le fichier est manquant (par exemple, s'il a été accidentellement supprimé), vous pouvez le créer manuellement en le nommant .htaccess (le nom commence par un point, sans extension).
Ouvrez le fichier avec un éditeur de texte (par exemple, Notepad++ ou VS Code).
N'utilisez pas de suites bureautiques (comme MS Word) pour l'édition, car elles peuvent insérer des caractères cachés qui endommageront le fichier.
Ci-dessous se trouve une collection de fichiers .htaccess standards utilisés par défaut dans les CMS populaires. Ces exemples peuvent être utiles si vous avez accidentellement supprimé ou corrompu le fichier .htaccess d'origine et que vous devez le restaurer pour que votre site fonctionne correctement.
Wordpress
Le .htaccess par défaut pour WordPress active les URL « propres » et inclut des règles de redirection de base :
# 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
Si un multisite avec des sous-domaines est utilisé (par exemple, site1.example.com, site2.example.com) :
# BEGIN WordPress Multisite
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# Redirection pour le multisite (sous-domaines)
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
</IfModule>
# END WordPress Multisite
Si un multisite avec des sous-répertoires est utilisé (par exemple, example.com/site1, example.com/site2) :
# BEGIN WordPress Multisite
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# Redirection pour le multisite (sous-répertoires)
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule . index.php [L]
</IfModule>
# END WordPress Multisite
Joomla 2.5-3
Joomla utilise .htaccess pour la protection de base et la configuration SEF :
##
# @package Joomla
# @copyright Copyright (C) 2005 - 2012 Open Source Matters. All rights reserved.
# @license GNU General Public License version 2 or later; see LICENSE.txt
##
##
# LISEZ CECI COMPLÈTEMENT SI VOUS CHOISISSEZ D'UTILISER CE FICHIER !
#
# La ligne juste en dessous de cette section : 'Options +FollowSymLinks' peut causer des problèmes
# avec certaines configurations de serveur. Elle est requise pour l'utilisation de mod_rewrite, mais peut déjà être
# définie par votre administrateur système d'une manière qui interdit de la changer dans
# votre fichier .htaccess. Si son utilisation provoque une erreur sur votre serveur, commentez-la (ajoutez # au début
# de la ligne), rechargez votre site dans votre navigateur et testez vos URL SEF. Si elles fonctionnent,
# elle a été définie par votre administrateur système et vous n'avez pas besoin de la définir ici.
##
## Peut être commentée si elle cause des erreurs, voir les notes ci-dessus.
Options +FollowSymLinks
## Mod_rewrite en cours d'utilisation.
RewriteEngine On
## Début - Règles de réécriture pour bloquer certaines exploitations courantes.
# Si vous rencontrez des problèmes sur votre site, bloquez les opérations listées ci-dessous
# Ceci tente de bloquer le type d'exploit le plus courant 'tentatives' contre Joomla !
#
# Bloque tout script essayant d'encoder des données en base64 dans l'URL.
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Bloque tout script qui inclut une balise <script> dans l'URL.
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Bloque tout script essayant de définir une variable PHP GLOBALS via l'URL.
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Bloque tout script essayant de modifier une variable _REQUEST via l'URL.
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Retourne un en-tête 403 Forbidden et affiche le contenu de la page d'accueil racine
RewriteRule .* index.php [F]
#
## Fin - Règles de réécriture pour bloquer certaines exploitations courantes.
## Début - Redirections personnalisées
#
# Si vous avez besoin de rediriger certaines pages, ou de définir une redirection canonique non-www vers
# www (ou vice versa), placez ce code ici. Assurez-vous que ces
# redirections utilisent la syntaxe RewriteRule correcte et les drapeaux [R=301,L].
#
## Fin - Redirections personnalisées
##
# Décommentez la ligne suivante si l'URL de votre serveur web
# n'est pas directement liée aux chemins de fichiers physiques.
# Mettez à jour votre répertoire Joomla ! (juste / pour la racine).
##
# RewriteBase /
## Début - Section SEF du noyau Joomla !.
#
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
#
# Si le chemin demandé et le fichier ne sont pas /index.php et que la requête
# n'a pas déjà été réécrite en interne vers le script index.php
RewriteCond %{REQUEST_URI} !^/index\.php
# et que la requête concerne quelque chose dans le dossier composant,
# ou pour la racine du site, ou pour une URL sans extension, ou que
# l'URL demandée se termine par l'une des extensions listées
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]
# et que le chemin et le fichier demandés ne correspondent pas directement à un fichier physique
RewriteCond %{REQUEST_FILENAME} !-f
# et que le chemin et le fichier demandés ne correspondent pas directement à un répertoire physique
RewriteCond %{REQUEST_FILENAME} !-d
# réécrire en interne la requête vers le script index.php
RewriteRule .* index.php [L]
#
## Fin - Section SEF du noyau Joomla !.
Joomla 4-5
Dans Joomla 4, plus d'attention est accordée à la sécurité et à la mise en cache :
##
# @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
##
##
# LISEZ CECI COMPLÈTEMENT SI VOUS CHOISISSEZ D'UTILISER CE FICHIER !
#
# La ligne 'Options +FollowSymLinks' peut causer des problèmes avec certaines configurations de serveur.
# Elle est requise pour l'utilisation d'Apache mod_rewrite, mais elle a peut-être déjà été définie par
# votre administrateur système d'une manière qui interdit de la modifier dans ce fichier .htaccess.
# Si son utilisation entraîne une erreur sur votre site, commentez-la (ajoutez # au début
# de la ligne), rechargez votre site dans votre navigateur et testez vos URL SEF. Si
# elles fonctionnent, alors elle a été définie par votre administrateur système et vous n'avez pas besoin de
# la définir ici.
##
## ERREURS CSS OU JAVASCRIPT MANQUANTES
#
# Si votre site a un aspect étrange après l'activation de ce fichier, alors votre serveur gzippe probablement déjà
# les fichiers css et js et vous devriez commenter la section GZIP de ce fichier.
##
## OPENLITESPEED
#
# Si vous utilisez un serveur web OpenLiteSpeed, toute modification apportée à ce fichier ne prendra effet
# qu'après le redémarrage du serveur web.
##
## Peut être commenté si cela cause des erreurs, voir les notes ci-dessus.
Options +FollowSymlinks
Options -Indexes
## Pas de listes de répertoires
<IfModule mod_autoindex.c>
IndexIgnore *
</IfModule>
## Supprimer la détection de type MIME dans les navigateurs pour les types inconnus
<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
</IfModule>
## Protection contre certaines requêtes inter-origines. Plus d'informations peuvent être trouvées ici :
## 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>
## Désactiver JavaScript inline lors de l'ouverture directe de fichiers SVG ou de leur intégration avec la balise object
<FilesMatch "\.svg$">
<IfModule mod_headers.c>
Header always set Content-Security-Policy "script-src 'none'"
</IfModule>
</FilesMatch>
## Ces directives ne sont activées que si le module Apache mod_rewrite est activé
<IfModule mod_rewrite.c>
RewriteEngine On
## Début - Règles de réécriture pour bloquer certaines exploitations courantes.
# Si vous rencontrez des problèmes sur votre site, commentez les opérations listées
# ci-dessous en ajoutant un # au début de la ligne.
# Ceci tente de bloquer le type d'exploit le plus courant 'tentatives' sur Joomla !
#
# Bloquez tout script qui essaie d'encoder des données en base64 dans l'URL.
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Bloquez tout script qui inclut une balise <script> dans l'URL.
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Bloquez tout script qui essaie de définir une variable PHP GLOBALS via l'URL.
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Bloquez tout script qui essaie de modifier une variable _REQUEST via l'URL.
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Retourne l'en-tête 403 Forbidden et affiche le contenu de la page d'accueil
RewriteRule .* index.php [F]
#
## Fin - Règles de réécriture pour bloquer certaines exploitations courantes.
## Début - Redirections personnalisées
#
# Si vous avez besoin de rediriger certaines pages, ou de définir une redirection canonique non-www vers
# www (ou vice versa), placez ce code ici. Assurez-vous que ces
# redirections utilisent la syntaxe RewriteRule correcte et les drapeaux [R=301,L].
#
## Fin - Redirections personnalisées
##
# Décommentez la ligne suivante si l'URL de votre serveur web
# n'est pas directement liée aux chemins de fichiers physiques.
# Mettez à jour votre répertoire Joomla ! (juste / pour la racine).
##
# RewriteBase /
## Début - Section SEF du noyau Joomla !.
#
# Correctif PHP FastCGI pour l'autorisation HTTP, requis pour l'application API
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# -- URL SEF pour l'application API
# Si le chemin demandé commence par /api, que le fichier n'est pas /api/index.php
# et que la requête n'a pas déjà été réécrite en interne vers le script
# api/index.php
RewriteCond %{REQUEST_URI} ^/api/
RewriteCond %{REQUEST_URI} !^/api/index\.php
# et que le chemin et le fichier demandés ne correspondent pas directement à un fichier physique
RewriteCond %{REQUEST_FILENAME} !-f
# et que le chemin et le fichier demandés ne correspondent pas directement à un répertoire physique
RewriteCond %{REQUEST_FILENAME} !-d
# réécrire en interne la requête vers le script /api/index.php
RewriteRule .* api/index.php [L]
# -- URL SEF pour l'application frontend publique
# Si le chemin et le fichier demandés ne sont pas /index.php et que la requête
# n'a pas déjà été réécrite en interne vers le script index.php
RewriteCond %{REQUEST_URI} !^/index\.php
# et que le chemin et le fichier demandés ne correspondent pas directement à un fichier physique
RewriteCond %{REQUEST_FILENAME} !-f
# et que le chemin et le fichier demandés ne correspondent pas directement à un répertoire physique
RewriteCond %{REQUEST_FILENAME} !-d
# réécrire en interne la requête vers le script index.php
RewriteRule .* index.php [L]
#
## Fin - Section SEF du noyau Joomla !.
</IfModule>
## Ces directives ne sont activées que si le module Apache mod_rewrite est désactivé
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
# Lorsque le module mod_rewrite d'Apache n'est pas disponible, nous instruisons une redirection temporaire
# de la page de démarrage vers le contrôleur frontal explicitement afin que le site web
# et les liens générés puissent toujours être utilisés.
RedirectMatch 302 ^/$ /index.php/
# RedirectTemp ne peut pas être utilisé à la place
</IfModule>
</IfModule>
## GZIP
## Ces directives ne sont activées que si le module Apache mod_headers est activé.
## Cette section vérifiera si un fichier .gz existe et le cas échéant le diffusera
## directement ou compressera à la volée tout actif.
## Si votre site commence à avoir un aspect étrange après l'activation de ce fichier, et que vous voyez
## ERR_CONTENT_DECODING_FAILED dans l'onglet réseau de la console de votre navigateur,
## alors votre serveur compresse déjà les fichiers css et js et vous n'avez pas besoin de ce
## bloc activé dans votre .htaccess
<IfModule mod_headers.c>
# Servir les fichiers CSS compressés gzip s'ils existent
# et si le client accepte gzip.
RewriteCond "%{HTTP:Accept-encoding}" "gzip"
RewriteCond "%{REQUEST_FILENAME}\.gz" -s
RewriteRule "^(.*)\.css" "$1\.css\.gz" [QSA]
# Servir les fichiers JS compressés gzip s'ils existent
# et si le client accepte gzip.
RewriteCond "%{HTTP:Accept-encoding}" "gzip"
RewriteCond "%{REQUEST_FILENAME}\.gz" -s
RewriteRule "^(.*)\.js" "$1\.js\.gz" [QSA]
# Servir les types de contenu corrects et éviter la double compression gzip de mod_deflate.
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)$">
# Servir le type d'encodage correct.
Header set Content-Encoding gzip
# Forcer les proxys à mettre en cache les fichiers css/js
# gzippés ET non gzippés séparément.
Header append Vary Accept-Encoding
</FilesMatch>
</IfModule>
Drupal 7
Le .htaccess dans Drupal 7 inclut des paramètres de sécurité et d'optimisation de base. Contenu typique :
# Empêcher les signatures de serveur et la navigation dans les répertoires
ServerSignature Off
Options -Indexes
# Protéger les fichiers sensibles
<FilesMatch "\.(htaccess|htpasswd)">
Order Allow,Deny
Deny from all
</FilesMatch>
# Protéger les fichiers contre l'accès direct
<FilesMatch "\.(txt|md|yml|json|xml)$">
Order Allow,Deny
Deny from all
</FilesMatch>
# Définir un fuseau horaire par défaut pour PHP
SetEnv TZ Europe/Amsterdam
# Activer la compression pour de meilleures performances
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript text/javascript application/javascript
# Paramètres de mise en cache pour de meilleures performances
<IfModule mod_headers.c>
Header set Cache-Control "public, max-age=3600"
</IfModule>
Drupal 8
Pour Drupal 8, le .htaccess inclut déjà des améliorations supplémentaires et prend en charge de nouvelles fonctionnalités. Par exemple, il y a la prise en charge HTTP/2, une sécurité améliorée, une personnalisation pour gérer les URL propres et la mise en cache.
# Empêcher la navigation dans les répertoires et les signatures de serveur
ServerSignature Off
Options -Indexes
# Protéger les fichiers sensibles
<FilesMatch "\.(htaccess|htpasswd|ini|log|conf)$">
Order Allow,Deny
Deny from all
</FilesMatch>
# Prise en charge des URL propres
RewriteEngine on
RewriteBase /
# Prise en charge de HTTP/2
<IfModule http2_module>
Protocols h2 http/1.1
</IfModule>
# Contrôle de cache pour les actifs
<IfModule mod_headers.c>
Header set Cache-Control "public, max-age=86400, s-maxage=86400, must-revalidate"
</IfModule>
# Activer la compression
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript application/javascript text/javascript
# Rediriger les barres obliques finales pour les URL propres
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /+$
RewriteRule ^(.*)/$ /$1 [R=301,L]
Drupal 9
Pour Drupal 9, le .htaccess inclut des améliorations supplémentaires pour travailler avec des technologies web plus récentes telles que la prise en charge HTTP/2 et des mesures de sécurité plus strictes.
# Empêcher la navigation dans les répertoires et les signatures de serveur
ServerSignature Off
Options -Indexes
# Protéger les fichiers sensibles
<FilesMatch "\.(htaccess|htpasswd|ini|log|conf)$">
Order Allow,Deny
Deny from all
</FilesMatch>
# Activer les URL propres (essentiel pour que Drupal fonctionne correctement)
RewriteEngine on
RewriteBase /
# Prise en charge de HTTP/2 et de la mise en cache moderne
<IfModule mod_http2.c>
Protocols h2 http/1.1
</IfModule>
<IfModule mod_headers.c>
Header set Cache-Control "public, max-age=86400, s-maxage=86400, must-revalidate"
</IfModule>
# Activer la compression Gzip
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript text/javascript application/javascript
# Prise en charge des URL propres pour Drupal
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /+$
RewriteRule ^(.*)/$ /$1 [R=301,L]
OpenCart
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
Magento (2.x)
Magento a un fichier .htaccess complexe qui inclut des règles pour la compression, la mise en cache et la sécurité. Exemple pour Magento 2 :
<IfModule mod_php5.c>
php_flag memory_limit 756M
php_flag max_execution_time 18000
</IfModule>
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/pub/
RewriteRule ^(.*)$ pub/$1 [L]
</IfModule>
PrestaShop (1.7.x)
PrestaShop génère automatiquement le fichier .htaccess lors de l'installation ou lorsque vous modifiez les paramètres d'URL conviviales pour le SEO.
# ~~start~~ Ne supprimez pas ce commentaire, Prestashop conservera automatiquement le code en dehors de ce commentaire lorsque .htaccess sera généré à nouveau
# .htaccess généré automatiquement par PrestaShop solution e-commerce open-source
# http://www.prestashop.com - http://www.prestashop.com/forums
<IfModule mod_rewrite.c>
<IfModule mod_env.c>
SetEnv HTTP_MOD_REWRITE On
</IfModule>
RewriteEngine on
# Domaine : www.example.com
RewriteRule . - [E=REWRITEBASE:/]
# API
RewriteRule ^api$ api/ [L]
RewriteRule ^api/(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]
# Images
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]
RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]
# AlphaImageLoader pour IE et fancybox
RewriteRule ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]
# Dispatcher
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]
</IfModule>
<IfModule mod_headers.c>
<FilesMatch "\.(ttf|ttc|otf|eot|woff|woff2|svg)$">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType text/css "access plus 1 week"
ExpiresByType text/javascript "access plus 1 week"
ExpiresByType application/javascript "access plus 1 week"
ExpiresByType application/x-javascript "access plus 1 week"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType image/vnd.microsoft.icon "access plus 1 year"
ExpiresByType application/font-woff "access plus 1 year"
ExpiresByType application/x-font-woff "access plus 1 year"
ExpiresByType font/woff2 "access plus 1 year"
ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
ExpiresByType font/opentype "access plus 1 year"
ExpiresByType font/ttf "access plus 1 year"
ExpiresByType font/otf "access plus 1 year"
ExpiresByType application/x-font-ttf "access plus 1 year"
ExpiresByType application/x-font-otf "access plus 1 year"
</IfModule>
<IfModule mod_headers.c>
Header unset Etag
</IfModule>
FileETag none
<IfModule mod_deflate.c>
<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript application/x-javascript font/ttf application/x-font-ttf font/otf application/x-font-otf font/opentype image/svg+xml
</IfModule>
</IfModule>
# Si le mod rewrite n'est pas activé
ErrorDocument 404 /index.php?controller=404
# ~~start~~ Ne supprimez pas ce commentaire, Prestashop conservera automatiquement le code en dehors de ce commentaire lorsque .htaccess sera généré à nouveau
# .htaccess généré automatiquement par PrestaShop solution e-commerce open-source
# http://www.prestashop.com - http://www.prestashop.com/forums
<IfModule mod_rewrite.c>
<IfModule mod_env.c>
SetEnv HTTP_MOD_REWRITE On
</IfModule>
RewriteEngine on
# Domaine : www.example.com
RewriteRule . - [E=REWRITEBASE:/]
# API
RewriteRule ^api$ api/ [L]
RewriteRule ^api/(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]
# Images
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]
RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]
# AlphaImageLoader pour IE et fancybox
RewriteRule ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]
# Dispatcher
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]
</IfModule>
<IfModule mod_headers.c>
<FilesMatch "\.(ttf|ttc|otf|eot|woff|woff2|svg)$">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType text/css "access plus 1 week"
ExpiresByType text/javascript "access plus 1 week"
ExpiresByType application/javascript "access plus 1 week"
ExpiresByType application/x-javascript "access plus 1 week"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType image/vnd.microsoft.icon "access plus 1 year"
ExpiresByType application/font-woff "access plus 1 year"
ExpiresByType application/x-font-woff "access plus 1 year"
ExpiresByType font/woff2 "access plus 1 year"
ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
ExpiresByType font/opentype "access plus 1 year"
ExpiresByType font/ttf "access plus 1 year"
ExpiresByType font/otf "access plus 1 year"
ExpiresByType application/x-font-ttf "access plus 1 year"
ExpiresByType application/x-font-otf "access plus 1 year"
</IfModule>
<IfModule mod_headers.c>
Header unset Etag
</IfModule>
FileETag none
<IfModule mod_deflate.c>
<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript application/x-javascript font/ttf application/x-font-ttf font/otf application/x-font-otf font/opentype image/svg+xml
</IfModule>
</IfModule>
# Si le mod rewrite n'est pas activé
ErrorDocument 404 /index.php?controller=404
Shopify, Squarespace, Adobe Commerce et autres plateformes cloud
Shopify, Squarespace et Adobe Commerce (anciennement Magento Commerce) sont des plateformes basées sur le cloud qui ne permettent pas un accès direct au fichier .htaccess. Toute la configuration se fait via le panneau administratif.
Parmi les autres services de ce type, on trouve Wix, Weebly, BigCommerce et Jimdo. Ces plateformes permettent aux utilisateurs de configurer et d'optimiser leurs sites web via des interfaces visuelles, sans avoir besoin de modifier manuellement les fichiers de configuration du serveur.
Besoin d'aide pour restaurer votre fichier .htaccess ?
Si vous n'êtes pas sûr du CMS utilisé par votre site web ou de la manière de restaurer en toute sécurité un fichier .htaccess endommagé, nous sommes là pour vous aider.
Notre support technique est entièrement gratuit pour tous les clients Kodu.cloud et disponible 24h/24 et 7j/7. Il suffit de créer un ticket de support, et notre équipe vous aidera en quelques minutes.
Pour plus de détails sur ce qui est inclus, consultez notre politique de support.