wpmarmite/Astuces.htaccess/master/.htaccess - Htaccess File

wpmarmite/Astuces.htaccess/master/.htaccess

# Fichier .htaccess conçu à partir de l'article de WP Marmite
# http://wpmarmite.com/htaccess-wordpress/

# Code par défaut de WordPress (ne pas toucher)
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

# Désactiver l'affichage du contenu des répertoires
Options All -Indexes
# Alternative pour empêcher le listage des répertoires
IndexIgnore *
# Masquer les informations du serveur
ServerSignature Off
# Activation du suivi des liens symboliques
Options +FollowSymLinks
# Choix du fuseau horaire
SetEnv TZ Europe/Paris
# Encodage par défaut des fichiers textes et HTML
AddDefaultCharset UTF-8

# Protéger le fichier wp-config.php
<files wp-config.php>
order allow,deny
deny from all
</files>
# Protéger les fichiers .htaccess et .htpasswds
<Files ~ "^.*.([Hh][Tt][AaPp])">
order allow,deny
deny from all
satisfy all
</Files>

# Éviter le spam de commentaires
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post.php*
RewriteCond %{HTTP_REFERER} !.monsite.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
</IfModule>

# Éviter que l'on découvre l'identifiant d'un auteur
# Merci à Jean-Michel Silone du groupe Facebook WP-Secure https://www.facebook.com/groups/wp.securite/
<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} ^author=([0-9]*)
RewriteRule .* - [F]
</IfModule>

# Désactiver le hotlinking de vos images
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?monsite.com [NC]
RewriteRule .(jpg|jpeg|png|gif)$ http://fakeimg.pl/400x200/?text=Pas_touche_aux_images [NC,R,L]

# Bannir une adresse IP
<Limit GET POST>
order allow,deny
deny from xxx.xxx.xxx.xxx
allow from all
</Limit>

# Empêcher les visiteurs de ces sites d'accéder au votre
<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{HTTP_REFERER} monsite1.com [NC,OR]
 RewriteCond %{HTTP_REFERER} monsite2.com [NC,OR]
 RewriteRule .* - [F]
</ifModule>

# Rediriger les visiteurs venant site vers un autre
RewriteEngine on
RewriteCond %{HTTP_REFERER} sitesource.com/
RewriteRule ^(.*)$ http://www.sitedestination.com [R=301,L]

# Redirection d'une page quelconque
Redirect 301 /anciennepage/ http://www.monsite.com/nouvellepage
# Redirection d'une nouvelle catégorie (avec renommage de category en categorie)
Redirect 301 /category/technologie/ http://www.monsite.com/categorie/techno/

# Redirection du site sans www vers www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^monsite.com [NC]
RewriteRule ^(.*)$ http://www.monsite.com/$1 [L,R=301]
# Rediriger vers la version sans www
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.monsite.com [NC]
RewriteRule ^(.*)$ http://monsite.com/$1 [L,R=301]
# Redirection vers HTTPS 
RewriteCond     %{SERVER_PORT} ^80$
RewriteRule     ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

# Forcer le téléchargement pour ces types de fichiers
AddType application/octet-stream .doc .docx .xls .xlsx .csv .mp3 .mp4

# Page de maintenance
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_ADDR} !^xxx.xxx.xxx.xxx
RewriteRule $ /maintenance.html [R=302,L]

# Mise en cache des fichiers dans le navigateur
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"

ExpiresByType text/html "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/pdf "access plus 0 seconds"

ExpiresByType application/rss+xml "access plus 1 hour"
ExpiresByType application/atom+xml "access plus 1 hour"

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 application/x-font-woff2 "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"

ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "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"

ExpiresByType text/css "access plus 6 month"
ExpiresByType application/javascript "access plus 6 month"

ExpiresByType application/x-shockwave-flash "access plus 1 week"
ExpiresByType image/x-icon "access plus 1 week"
</IfModule>

# En-têtes
Header unset ETag
FileETag None
<ifModule mod_headers.c>  
<filesMatch ".(ico|jpe?g|png|gif|swf)$">  
    Header set Cache-Control "public"  
</filesMatch>  
<filesMatch ".(css)$">  
    Header set Cache-Control "public"  
</filesMatch>  
<filesMatch ".(js)$">  
    Header set Cache-Control "private"  
</filesMatch>  
<filesMatch ".(x?html?|php)$">  
    Header set Cache-Control "private, must-revalidate"
</filesMatch>
</ifModule>

# Compressions des fichiers statiques
<IfModule mod_deflate.c> 
    AddOutputFilterByType DEFLATE text/xhtml text/html text/plain text/xml text/javascript application/x-javascript text/css 
    BrowserMatch ^Mozilla/4 gzip-only-text/html 
    BrowserMatch ^Mozilla/4.0[678] no-gzip 
    BrowserMatch bMSIE !no-gzip !gzip-only-text/html 
    SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary 
    Header append Vary User-Agent env=!dont-vary 
</IfModule>  

AddOutputFilterByType DEFLATE text/html  
AddOutputFilterByType DEFLATE text/plain  
AddOutputFilterByType DEFLATE text/xml  
AddOutputFilterByType DEFLATE text/css  
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/json

# Bloquer l'utilisation de certains scripts
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]

# Protection contre les injections de fichiers
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(..//?)+ [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC]
RewriteRule .* - [F]

# Protections diverses (XSS, clickjacking et MIME-Type sniffing)
<ifModule mod_headers.c>
Header set X-XSS-Protection "1; mode=block"
Header always append X-Frame-Options SAMEORIGIN
Header set X-Content-Type-Options: "nosniff”
</ifModule>

On Github License

Files

Download PDF of Htaccess file
DEFLATE, GET, HTTP_HOST, HTTP_REFERER, HTTP_USER_AGENT, HTTPS, no-gzip, ORIGIN, POST, QUERY_STRING, REMOTE_ADDR, REQUEST_FILENAME, REQUEST_METHOD, REQUEST_URI, SERVER_NAME, SERVER_PORT, TZ

Comments

Apache