kloh-fr/kit-htaccess/master/.htaccess - Htaccess File

kloh-fr/kit-htaccess/master/.htaccess

########################################################################
# Sources et inspirations
# - server-configs-apache par H5BP : https://github.com/h5bp/server-configs-apache/blob/master/.htaccess
# - bpi-htaccess par Corinne Schillinger : https://github.com/inseo/bpi-htaccess/blob/master/.htaccess
# - htaccess par Gaël Poupard
# Sous [licence MIT](http://opensource.org/licenses/MIT "The MIT licence")
########################################################################

# Redirections
########################################################################

<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine on
</IfModule>

# Redirections spécifiques
#-----------------------------------------------------------------------
Redirect permanent  /dossier/     http://dossier.domaine.com/

# 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>

# Pages d'erreur personnalisées
########################################################################

ErrorDocument 401 /erreur/401.html
ErrorDocument 403 /erreur/403.html
ErrorDocument 404 /erreur/404.html
ErrorDocument 408 /erreur/408.html
ErrorDocument 500 /erreur/500.html
ErrorDocument 503 /erreur/503.html

# Mode de compatibilité Internet Explorer
########################################################################

# Bloquer le mode de compatibilité et forcer la dernière version
#-----------------------------------------------------------------------
<IfModule mod_headers.c>
  Header set X-UA-Compatible "IE=Edge,chrome=1"

  # Désactiver l'envoi du header sur les fichiers qui n'en ont pas besoin
  <FilesMatch ".(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svg|svgz|ttf|vcf|webm|webp|woff|xml|xpi)$">
    Header unset X-UA-Compatible
  </FilesMatch>
</IfModule>

# Types MIME
########################################################################
# Associer un type MIME à certaines extensions
# Tip : pour forcer un type de fichier à être téléchargé : AddType application/octet-stream .extension

# JavaScript / JSON
#-----------------------------------------------------------------------
# Écrase les types MIME text/javascript erronés
AddType application/javascript              js
AddType application/json                    json map
AddType application/ld+json                 jsonld
  
# SVG
#-----------------------------------------------------------------------
# Requis pour les fonts SVG sur iPad : twitter.com/FontSquirrel/status/14855840545
AddType image/svg+xml                       svg svgz
AddEncoding gzip                            svgz

# Fonts
#-----------------------------------------------------------------------
AddType  application/vnd.ms-fontobject      eot
AddType  application/x-font-ttf             ttf ttc
AddType  font/opentype                      otf
AddType  application/x-font-woff            woff

# Audio
#-----------------------------------------------------------------------
AddType audio/mp4                           m4a f4a f4b
AddType audio/ogg                           oga ogg opus

# Vidéo
#-----------------------------------------------------------------------
AddType video/mp4                           f4v f4p m4v mp4
AddType video/ogg                           ogv
AddType video/webm                          webm
AddType video/x-flv                         flv

# Images
#-----------------------------------------------------------------------
AddType image/x-icon                        ico
AddType image/jpeg                          jpeg jpg jpe JPG
AddType image/gif                           gif GIF

# Autres
#-----------------------------------------------------------------------
AddType application/octet-stream            safariextz
AddType application/x-chrome-extension      crx
AddType application/x-opera-extension       oex
AddType application/x-web-app-manifest+json webapp
AddType application/x-xpinstall             xpi
AddType application/xml                     atom rdf rss xml
AddType image/webp                          webp
AddType image/x-icon                        cur
AddType text/cache-manifest                 appcache manifest
AddType text/vtt                            vtt
AddType text/x-component                    htc
AddType text/x-vcard                        vcf

# Encodage et langue
########################################################################

# Déclarer UTF-8 comme jeu de caractères par défaut (appliqué par défaut aux fichiers de type text/plain et text/html)
#-----------------------------------------------------------------------
AddDefaultCharset utf-8

# Forcer l'encodage UTF-8 sur certains fichiers
#-----------------------------------------------------------------------
<IfModule mod_mime.c>
    AddCharset utf-8 .css .js .json .jsonld .xml .rss .atom 
</IfModule>

# Définir la langue par défaut
#-----------------------------------------------------------------------
DefaultLanguage fr-FR

# Performances
########################################################################

# ETag
#-----------------------------------------------------------------------
# Supprimer l'en-tête Etag
<IfModule mod_headers.c>
  Header unset ETag
</IfModule>

# Si mod_headers n'est pas disponible, l'instruction FileETag None est appliquée (cette instruction n'est pas suffisante pour tous les serveurs)
FileETag None

# Compression Gzip
#-----------------------------------------------------------------------

<IfModule mod_deflate.c>
  # Identifier les en-têtes modifiés et forcer le support de la compression : developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping/
  <IfModule mod_setenvif.c>
    <IfModule mod_headers.c>
      SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)s*,?s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
      RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
    </IfModule>
  </IfModule>

  # Compresser tous les fichiers en fonction de leur type MIME
  <IfModule mod_filter.c>
    AddOutputFilterByType DEFLATE application/atom+xml
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/json
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
    AddOutputFilterByType DEFLATE application/x-font-ttf
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE font/opentype
    AddOutputFilterByType DEFLATE image/svg+xml
    AddOutputFilterByType DEFLATE image/x-icon
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/x-component
    AddOutputFilterByType DEFLATE text/xml
  </IfModule>
</IfModule>

# Expiration des données
#-----------------------------------------------------------------------
<IfModule mod_expires.c>
  ExpiresActive on

  # Durée par défaut
  ExpiresDefault                              "access plus 1 month"

  # HTML
  ExpiresByType text/html                     "access plus 0 seconds"

  # Cache manifeste
  ExpiresByType text/cache-manifest           "access plus 0 seconds"
  
  # Données
  ExpiresByType text/xml                      "access plus 0 seconds"
  ExpiresByType application/xml               "access plus 0 seconds"
  ExpiresByType application/json              "access plus 0 seconds"
  ExpiresByType application/ld+json           "access plus 0 seconds"
  
  # Composants HTC
  ExpiresByType text/x-component              "access plus 1 month"

  # Favicon 
  ExpiresByType image/x-icon                  "access plus 1 year"

  # Images, audio et vidéo
  ExpiresByType image/gif                     "access plus 1 month"
  ExpiresByType image/png                     "access plus 1 month"
  ExpiresByType image/jpg                     "access plus 1 month"
  ExpiresByType image/jpeg                    "access plus 1 month"
  ExpiresByType video/ogg                     "access plus 1 month"
  ExpiresByType audio/ogg                     "access plus 1 month"
  ExpiresByType video/mp4                     "access plus 1 month"
  ExpiresByType video/webm                    "access plus 1 month"

  # Fonts
  ExpiresByType application/x-font-ttf        "access plus 1 month"
  ExpiresByType font/opentype                 "access plus 1 month"
  ExpiresByType application/x-font-woff       "access plus 1 month"
  ExpiresByType image/svg+xml                 "access plus 1 month"
  ExpiresByType application/vnd.ms-fontobject "access plus 1 month"

  # CSS et JavaScript
  ExpiresByType text/css                      "access plus 1 month"
  ExpiresByType application/javascript        "access plus 1 month"

  # Flux de syndication
  ExpiresByType application/rss+xml           "access plus 1 hour"
  ExpiresByType application/atom+xml          "access plus 1 hour"
</IfModule>

# Sécurité
########################################################################

# Interdire la lecture d'un répertoire sans fichier index
#-----------------------------------------------------------------------
<IfModule mod_autoindex.c>
  Options -Indexes
</IfModule>

# Interdire l'accès au fichier htaccess
#-----------------------------------------------------------------------
<Files .htaccess>
  Order allow,deny
  Deny from all
</Files>

# Interdire l'accès au fichier wp-config
#-----------------------------------------------------------------------
<Files wp-config.php>
  Order allow,deny
  Deny from all
</Files>

On Github License

Files

Download PDF of Htaccess file
DEFLATE, REQUEST_FILENAME

Comments

Apache