-
Notifications
You must be signed in to change notification settings - Fork 12
/
.htaccess
128 lines (90 loc) · 4.93 KB
/
.htaccess
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
## Pour activer la compression des fichiers
## dans php.ini : zlib.output_compression = On
## dans la config apache activer :
## LoadModule deflate_module "{APACHEPATH}/modules/mod_deflate.so"
## LoadModule filter_module "{APACHEPATH}/modules/mod_filter.so"
#### COMPRESSION
## Version de base
#SetOutputFilter DEFLATE
#AddOutputFilterByType DEFLATE "application/atom+xml" "application/javascript" "application/json" "application/ld+json" "application/manifest+json" "application/rdf+xml" "application/rss+xml" "application/schema+json" "application/vnd.geo+json" "application/vnd.ms-fontobject" "application/x-font-ttf" "application/x-javascript" "application/x-web-app-manifest+json" "application/xhtml+xml" "application/xml" "font/eot" "font/opentype" "image/bmp" "image/svg+xml" "image/vnd.microsoft.icon" "image/x-icon" "text/cache-manifest" "text/css" "text/html" "text/javascript" "text/plain" "text/vcard" "text/vnd.rim.location.xloc" "text/vtt" "text/x-component" "text/x-cross-domain-policy" "text/xml"
## Variante de compression qui permet de faire fonctionner le img_check
<IfModule mod_deflate.c>
## La ligne suivante suffit pour .js .css .svg
AddOutputFilter DEFLATE js css svg
AddOutputFilterByType DEFLATE text/plain text/xml application/xhtml+xml text/css application/xml application/rss+xml application/atom_xml application/x-javascript application/x-httpd-php application/x-httpd-fastphp text/html
## Les lignes suivantes sont destinées à éviter les bugs avec certains navigateurs
#BrowserMatch ^Mozilla/4 gzip-only-text/html
#BrowserMatch ^Mozilla/4\.0[678] no-gzip
#BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</IfModule>
#### CACHE
## Contrôle du cache navigateur - Expire headers
<IfModule mod_expires.c>
ExpiresActive On
#ExpiresDefault "access plus 7200 seconds"
ExpiresByType image/jpg "access plus 1 week"
ExpiresByType image/jpeg "access plus 1 week"
ExpiresByType image/png "access plus 1 week"
ExpiresByType image/gif "access plus 1 week"
ExpiresByType image/webp "access plus 1 week"
ExpiresByType image/svg+xml "access plus 1 week"
AddType image/x-icon .ico
ExpiresByType image/ico "access plus 1 week"
ExpiresByType image/icon "access plus 1 week"
ExpiresByType image/x-icon "access plus 1 week"
ExpiresByType text/css "access plus 1 week"
ExpiresByType text/javascript "access plus 1 week"
#ExpiresByType text/html "access plus 7200 seconds"
#ExpiresByType application/xhtml+xml "access plus 7200 seconds"
ExpiresByType application/javascript "access plus 1 week"
ExpiresByType application/x-javascript "access plus 1 week"
</IfModule>
## Contrôle du cache navigateur - Cache-control
<IfModule mod_headers.c>
<FilesMatch "\\.(ico|jpe?g|png|gif|webp|svg|woff2)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>
<FilesMatch "\\.(css)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
<FilesMatch "\\.(js)$">
Header set Cache-Control "max-age=216000, private"
</FilesMatch>
#<FilesMatch "\\.(x?html?|php)$">
#Header set Cache-Control "max-age=600, private, must-revalidate"
#</FilesMatch>
</IfModule>
#### RÉÉCRITURE URL et gestion des exécutions/erreurs
## Rewrite On
RewriteEngine On
## Certains hébergeurs ont besoin de cette information pour que le CMS fonctionne bien (Ex. Ionos)
#RewriteBase /
## Empêcher Apache d'afficher sa signature de serveur
ServerSignature off
## No Directory Listing #FollowSymLinks
Options -Indexes
#RewriteCond %{HTTP_HOST} ^domaine.com
#RewriteRule ^(.*) http://www.domaine.com/$1 [R=301,L]
## Protège de l'exécution de fichier php dans le dossier media
RewriteRule media/.*\.(php5|php4|php|php3|php2|phtml|pl|py|jsp|asp|htm|shtml|sh|cgi)$ - [F,NC,L]
## Affichage du 404 simple d'Apache sur les extensions suivantes
RewriteCond %{REQUEST_FILENAME} !\.(css|js|html|htm|txt|xml|jpg|jpeg|png|gif|tif|tiff|bmp|ico|svg|svgz|pdf|exe|gz|gzip|tar|zip|mp3|ogg|wav|wma|avi|mp4|mpeg|odb|odc|odf|odg|odp|ods|odt|rtf|doc|docx|xls|xlsx|pps|ppt|pptx|swf)$ [NC]
#### SITE STATIQUE
## Si tous les fichiers statiques sont dans un dossier :
## Dans robots.txt ne pas référencer dans static/ => Disallow: static/*
## Pour charger le index.html statique s'il existe, sinon execution de index.php
#DirectoryIndex static/index.html index.php
## Charge le fichier en cache s'il existe
#RewriteCond %{DOCUMENT_ROOT}/static/$1.html -f
#RewriteRule (.*) /static/$1.html [L]
## Si pas de dossier spécifique pour les fichiers statiques activer la priorisation de lecture des .HTML sur l'exécution de PHP
## Si fichier HTML existant on le charge au lieu de l'execution de PHP
#RewriteCond %{REQUEST_FILENAME}.html -f
#RewriteRule ^(.*?)/?$ $1.html [L]
#### EXECUTION PHP
## Pas un fichier
RewriteCond %{REQUEST_FILENAME} !-f
## Pas un dossier
RewriteCond %{REQUEST_FILENAME} !-d
## On ouvre index.php qui gère la génération des contenus
RewriteRule . index.php [L]