live Coding fichier htaccess
Le fichier .htaccess (Hypertext Access) est un fichier de configuration utilisé par le serveur web Apache. Il permet de modifier la configuration du serveur au niveau du répertoire, offrant ainsi un contrôle granulaire sur les fonctionnalités et les comportements du site web.
Le fichier .htaccess permet de :
- Gérer les redirections d'URL
- Configurer la sécurité
- Optimiser les performances
- Personnaliser les pages d'erreur
- Gérer le cache et la compression
- Réécrire les URLs pour les rendre plus conviviales
# Vérifier que le module mod_rewrite est activé
<IfModule mod_rewrite.c>
RewriteEngine On
</IfModule>
# Configuration dans le fichier httpd.conf ou apache2.conf
# AllowOverride All doit être défini pour le répertoire concernéLe fichier .htaccess doit être placé à la racine de votre site web ou dans le sous-répertoire où vous souhaitez appliquer les règles. Exemple d'arborescence :
www/
├── .htaccess # Règles globales
├── public/
│ └── .htaccess # Règles spécifiques au dossier public
└── assets/
└── .htaccess # Règles spécifiques aux assets
Les règles sont héritées de manière hiérarchique. Les règles définies dans un sous-répertoire écrasent celles du répertoire parent.
# Redirection des erreurs vers des pages personnalisées
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/500.html
ErrorDocument 403 /errors/403.html
ErrorDocument 401 /errors/401.html# Redirection simple
Redirect 301 /ancien-chemin /nouveau-chemin
# Redirection avec expression régulière
RedirectMatch 301 ^/blog/([0-9]+)/([0-9]+)/(.*)$ /articles/$3# Activer l'indexation
Options +Indexes
# Désactiver l'indexation
Options -Indexes
# Personnaliser l'affichage de l'index
IndexOptions FancyIndexing<IfModule mod_deflate.c>
# Compression pour les types MIME spécifiques
AddOutputFilterByType DEFLATE text/html text/plain text/xml
AddOutputFilterByType DEFLATE text/css application/javascript
AddOutputFilterByType DEFLATE application/json application/xml
AddOutputFilterByType DEFLATE image/svg+xml application/font-woff
</IfModule><IfModule mod_expires.c>
ExpiresActive On
# Images
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
# CSS, JavaScript
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
# Par défaut
ExpiresDefault "access plus 1 month"
</IfModule><IfModule mod_headers.c>
Header set Connection keep-alive
# Durée maximale de la connexion
KeepAliveTimeout 5
# Nombre maximal de requêtes par connexion
MaxKeepAliveRequests 100
</IfModule># Bloquer une IP spécifique
Deny from 192.168.1.1
# Bloquer une plage d'IP
Deny from 192.168.1.0/24
# Autoriser certaines IP uniquement
Order deny,allow
Deny from all
Allow from 192.168.1.100# Protéger le fichier .env
<Files .env>
Order allow,deny
Deny from all
</Files>
# Protéger plusieurs types de fichiers
<FilesMatch "^(\.env|\.git|\.htaccess)">
Order allow,deny
Deny from all
</FilesMatch># Désactiver l'exécution PHP dans un répertoire
<Directory "/uploads">
php_flag engine off
</Directory># Redirection vers HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Activer HSTS
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"