Le fichier htaccess est un fichier de site Web puissant qui contrôle la configuration de votre site Web de haut niveau. Sur des serveurs qui exécutent Apache (un logiciel serveur Web), Le fichier htaccess vous permet de modifier la configuration de votre site Web WordPress sans avoir à éditer les fichiers de configuration du serveur.
Utilisations courantes du fichier .htaccess
Il existe plusieurs cas d’utilisation du fichier .htaccess. Les exemples les plus courants incluent:
- Ajouter des redirections pour certaines URL
- Charger des pages d’erreur personnalisées, comme 404 pages
- Forcer votre site à utiliser HTTPS au lieu de HTTP
- Protégez par mot de passe certains répertoires de votre serveur
- Empêcher le hotlinking
L’utilisation de fichiers .htaccess est un outil puissant pour gérer votre serveur, mais cela peut être délicat. Assurez-vous que vous êtes familiarisé avec les modifications apportées à votre serveur avant de commencer à modifier les fichiers .htaccess.
Remarque: avant d’essayer l’une des choses décrites dans ce guide, nous vous recommandons fortement de faire une sauvegarde du fichier .htaccess et de l’ensemble de votre site Web WordPress (comme avec un plugin de sauvegarde WordPress comme BackupBuddy). Si vous n’êtes pas à l’aise pour apporter des modifications à votre fichier .htaccess, vous devrez peut-être contacter un développeur de site Web.
Utilisation de plusieurs fichiers .htaccess
Vous pouvez appliquer différents paramètres à différents répertoires sur votre serveur en utilisant plusieurs fichiers .htaccess. Vous pouvez, en théorie, créer un fichier .htaccess dans n’importe quel répertoire de votre serveur en créant et en téléchargeant un fichier texte brut.
Voici quelques points à garder à l’esprit:
En règle générale, vous souhaitez réduire le nombre de fichiers .htaccess sur votre serveur car trop de configurations peuvent ralentir votre serveur.
Lorsque votre serveur voit un fichier .htaccess dans un répertoire, il recherche également des fichiers .htaccess dans tous les répertoires parents, augmentant ainsi l’utilisation des ressources du serveur.
Les fichiers .htaccess situés plus haut dans le chemin du fichier ont toujours la priorité.
# Fichier spécialement conçu pour les sites WordPress #---------------------------------------------------------------- # BLOCK WP FILE ACCESS # Bloquer l'accès aux fichiers de WordPress #---------------------------------------------------------------- <Files license.txt> <IfModule mod_authz_core.c> Require all denied </IfModule> <IfModule !mod_authz_core.c> Order deny,allow Deny from all </IfModule> </Files> <Files wp-config-sample.php> <IfModule mod_authz_core.c> Require all denied </IfModule> <IfModule !mod_authz_core.c> Order deny,allow Deny from all </IfModule> </Files> <Files readme.html> <IfModule mod_authz_core.c> Require all denied </IfModule> <IfModule !mod_authz_core.c> Order deny,allow Deny from all </IfModule> </Files> # --------------------------------------------------------------- # BASIC HTACCESS RULES # Les règles basique de htaccess: ceci interdit l'accès au fichier # htaccess. #---------------------------------------------------------------- <Files .htaccess> <IfModule mod_authz_core.c> Require all denied </IfModule> <IfModule !mod_authz_core.c> Order deny,allow Deny from all </IfModule> </Files> ServerSignature Off LimitRequestBody 10485760 <Files wp-config.php> <IfModule mod_authz_core.c> Require all denied </IfModule> <IfModule !mod_authz_core.c> Order deny,allow Deny from all </IfModule> </Files> #---------------------------------------------------------------- # DEBUG LOG BLOCK HTACCESS RULES #---------------------------------------------------------------- <Files debug.log> <IfModule mod_authz_core.c> Require all denied </IfModule> <IfModule !mod_authz_core.c> Order deny,allow Deny from all </IfModule> </Files> #---------------------------------------------------------------- # DISABLE INDEX VIEWS # Déactiver l'affichage automatique l'arborésance des dossiers # en l'absence du fichier index.php ou index.html #---------------------------------------------------------------- Options -Indexes #---------------------------------------------------------------- # USER AGENT BLACKLIST # Filtre les "User-Agent" #---------------------------------------------------------------- <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^SquigglebotBot [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^SurveyBot [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^YottaShopping_Bo [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^baiduspider [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^bezeqint\.net [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^cellcom\.co\.il [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^webcrawl\.net [NC] RewriteRule ^(.*)$ - [F,L] </IfModule> #---------------------------------------------------------------- # DISABLE TRACE TRACK # Désactiver la dépistage #---------------------------------------------------------------- <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) RewriteRule .* - [F] </IfModule> #---------------------------------------------------------------- # FORBID PROXY COMMENTS # Interdire les commentaires des proxy #---------------------------------------------------------------- <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_METHOD} ^POST RewriteCond %{HTTP:VIA} !^$ [OR] RewriteCond %{HTTP:FORWARDED} !^$ [OR] RewriteCond %{HTTP:USERAGENT_VIA} !^$ [OR] RewriteCond %{HTTP:X_FORWARDED_FOR} !^$ [OR] RewriteCond %{HTTP:X_FORWARDED_HOST} !^$ [OR] RewriteCond %{HTTP:PROXY_CONNECTION} !^$ [OR] RewriteCond %{HTTP:XPROXY_CONNECTION} !^$ [OR] RewriteCond %{HTTP:HTTP_PC_REMOTE_ADDR} !^$ [OR] RewriteCond %{HTTP:HTTP_CLIENT_IP} !^$ RewriteRule wp-comments-post\.php - [F] </IfModule> #---------------------------------------------------------------- # DENY BAD QUERY STRINGS # Refuser les mauvaises chaînes de caractères dans les requêtes #---------------------------------------------------------------- <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{QUERY_STRING} ftp: [NC,OR] RewriteCond %{QUERY_STRING} http: [NC,OR] RewriteCond %{QUERY_STRING} https: [NC,OR] RewriteCond %{QUERY_STRING} mosConfig [NC,OR] RewriteCond %{QUERY_STRING} ^.*(globals|encode|localhost|loopback).* [NC,OR] RewriteCond %{QUERY_STRING} (\;|'|\"|%22).*(request|insert|union|declare|drop) [NC] RewriteRule ^(.*)$ - [F,L] </IfModule> #---------------------------------------------------------------- # ADVANCED CHAR STRING FILTER # Filtre avancé pour interdir certains caratctères #---------------------------------------------------------------- <IfModule mod_alias.c> RedirectMatch 403 \, RedirectMatch 403 \: RedirectMatch 403 \; RedirectMatch 403 \= RedirectMatch 403 \[ RedirectMatch 403 \] RedirectMatch 403 \^ RedirectMatch 403 \` RedirectMatch 403 \{ RedirectMatch 403 \} RedirectMatch 403 \~ RedirectMatch 403 \" RedirectMatch 403 \$ RedirectMatch 403 \< RedirectMatch 403 \> RedirectMatch 403 \| RedirectMatch 403 \.\. RedirectMatch 403 \%0 RedirectMatch 403 \%A RedirectMatch 403 \%B RedirectMatch 403 \%C RedirectMatch 403 \%D RedirectMatch 403 \%E RedirectMatch 403 \%F RedirectMatch 403 \%22 RedirectMatch 403 \%27 RedirectMatch 403 \%28 RedirectMatch 403 \%29 RedirectMatch 403 \%3C RedirectMatch 403 \%3E RedirectMatch 403 \%3F RedirectMatch 403 \%5B RedirectMatch 403 \%5C RedirectMatch 403 \%5D RedirectMatch 403 \%7B RedirectMatch 403 \%7C RedirectMatch 403 \%7D #---------------------------------------------------------------- # COMMON PATTERNS # Modèles communs #---------------------------------------------------------------- RedirectMatch 403 \_vpi RedirectMatch 403 \.inc RedirectMatch 403 xAou6 RedirectMatch 403 db\_name RedirectMatch 403 select\( RedirectMatch 403 convert\( RedirectMatch 403 \/query\/ RedirectMatch 403 ImpEvData RedirectMatch 403 \.XMLHTTP RedirectMatch 403 proxydeny RedirectMatch 403 function\. RedirectMatch 403 remoteFile RedirectMatch 403 servername RedirectMatch 403 \&rptmode\= RedirectMatch 403 sys\_cpanel RedirectMatch 403 db\_connect RedirectMatch 403 doeditconfig RedirectMatch 403 check\_proxy RedirectMatch 403 system\_user RedirectMatch 403 \/\(null\)\/ RedirectMatch 403 clientrequest RedirectMatch 403 option\_value RedirectMatch 403 ref\.outcontrol #---------------------------------------------------------------- # SPECIFIC EXPLOITS # Exploits spécifiques #---------------------------------------------------------------- RedirectMatch 403 errors\. RedirectMatch 403 config\. RedirectMatch 403 include\. RedirectMatch 403 display\. RedirectMatch 403 register\. RedirectMatch 403 password\. RedirectMatch 403 maincore\. RedirectMatch 403 authorize\. RedirectMatch 403 macromates\. RedirectMatch 403 head\_auth\. RedirectMatch 403 submit\_links\. RedirectMatch 403 change\_action\. RedirectMatch 403 com\_facileforms\/ RedirectMatch 403 admin\_db\_utilities\. RedirectMatch 403 admin\.webring\.docs\. RedirectMatch 403 Table\/Latest\/index\. </IfModule> #---------------------------------------------------------------- # 6G FIREWALL/BLACKLIST # Pare-feu 6g / liste noire # @ https://perishablepress.com/6g/ # # 6G:[CHAÎNE DE REQUÊTE] #---------------------------------------------------------------- <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{QUERY_STRING} (eval\() [NC,OR] RewriteCond %{QUERY_STRING} (127\.0\.0\.1) [NC,OR] RewriteCond %{QUERY_STRING} ([a-z0-9]{2000,}) [NC,OR] RewriteCond %{QUERY_STRING} (javascript:)(.*)(;) [NC,OR] RewriteCond %{QUERY_STRING} (base64_encode)(.*)(\() [NC,OR] RewriteCond %{QUERY_STRING} (GLOBALS|REQUEST)(=|\[|%) [NC,OR] RewriteCond %{QUERY_STRING} (<|%3C)(.*)script(.*)(>|%3) [NC,OR] RewriteCond %{QUERY_STRING} (\|\.\.\.|\.\./|~|`|<|>|\|) [NC,OR] RewriteCond %{QUERY_STRING} (boot\.ini|etc/passwd|self/environ) [NC,OR] RewriteCond %{QUERY_STRING} (thumbs?(_editor|open)?|tim(thumb)?)\.php [NC,OR] RewriteCond %{QUERY_STRING} ('|\")(.*)(drop|insert|md5|select|union) [NC] RewriteRule .* - [F] </IfModule> #---------------------------------------------------------------- # 6G:[METHODES DE REQUÊTES] #---------------------------------------------------------------- <IfModule mod_rewrite.c> RewriteCond %{REQUEST_METHOD} ^(connect|debug|move|put|trace|track) [NC] RewriteRule .* - [F] </IfModule> #---------------------------------------------------------------- # 6G:[Référencier] #---------------------------------------------------------------- <IfModule mod_rewrite.c> RewriteCond %{HTTP_REFERER} ([a-z0-9]{2000,}) [NC,OR] RewriteCond %{HTTP_REFERER} (semalt.com|todaperfeita) [NC] RewriteRule .* - [F] </IfModule> #---------------------------------------------------------------- # 6G:[CHAÎNE DE REQUÊTE] #---------------------------------------------------------------- <IfModule mod_alias.c> RedirectMatch 403 (?i)([a-z0-9]{2000,}) RedirectMatch 403 (?i)(https?|ftp|php):/ RedirectMatch 403 (?i)(base64_encode)(.*)(\() RedirectMatch 403 (?i)(=\'|=\%27|/\'/?)\. RedirectMatch 403 (?i)/(\$(\&)?|\*|\"|\.|,|&|&?)/?$ RedirectMatch 403 (?i)(\{0\}|\(/\(|\.\.\.|\+\+\+|\\"\\") RedirectMatch 403 (?i)(~|`|<|>|:|;|,|%|\|\s|\{|\}|\[|\]|\|) RedirectMatch 403 (?i)/(=|\$&|_mm|cgi-|etc/passwd|muieblack) RedirectMatch 403 (?i)(&pws=0|_vti_|\(null\)|\{\$itemURL\}|echo(.*)kae|etc/passwd|eval\(|self/environ) RedirectMatch 403 (?i)\.(aspx?|bash|bak?|cfg|cgi|dll|exe|git|hg|ini|jsp|log|mdb|out|sql|svn|swp|tar|rar|rdf)$ RedirectMatch 403 (?i)/(^$|(wp-)?config|mobiquo|phpinfo|shell|sqlpatch|thumb|thumb_editor|thumbopen|timthumb|webshell)\.php </IfModule> #---------------------------------------------------------------- # 6G:[USER AGENTS] #---------------------------------------------------------------- <IfModule mod_setenvif.c> SetEnvIfNoCase User-Agent ([a-z0-9]{2000,}) bad_bot SetEnvIfNoCase User-Agent (archive.org|binlar|casper|checkpriv|choppy|clshttp|cmsworld|diavol|dotbot|extract|feedfinder|flicky|g00g1e|harvest|heritrix|httrack|kmccrew|loader|miner|nikto|nutch|planetwork|postrank|purebot|pycurl|python|seekerspider|siclab|skygrid|sqlmap|sucker|turnit|vikspider|winhttp|xxxyy|youda|zmeu|zune) bad_bot # Apache < 2.3 #--------------- <IfModule !mod_authz_core.c> Order Allow,Deny Allow from all Deny from env=bad_bot </IfModule> # Apache >= 2.3 # ------------- <IfModule mod_authz_core.c> <RequireAll> Require all Granted Require not env bad_bot </RequireAll> </IfModule> </IfModule> #---------------------------------------------------------------- # 5G BLACKLIST/FIREWALL (2013) # @ http://perishablepress.com/5g-blacklist-2013/ #---------------------------------------------------------------- # 5G:[QUERY STRINGS] #---------------------------------------------------------------- <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{QUERY_STRING} (\"|%22).*(<|>|%3) [NC,OR] RewriteCond %{QUERY_STRING} (javascript:).*(\;) [NC,OR] RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3) [NC,OR] RewriteCond %{QUERY_STRING} (\\|\.\./|`|='$|=%27$) [NC,OR] RewriteCond %{QUERY_STRING} (\;|'|\"|%22).*(union|select|insert|drop|update|md5|benchmark|or|and|if) [NC,OR] RewriteCond %{QUERY_STRING} (base64_encode|localhost|mosconfig) [NC,OR] RewriteCond %{QUERY_STRING} (boot\.ini|echo.*kae|etc/passwd) [NC,OR] RewriteCond %{QUERY_STRING} (GLOBALS|REQUEST)(=|\[|%) [NC] RewriteRule .* - [F] </IfModule> #---------------------------------------------------------------- # 5G:[USER AGENTS] #---------------------------------------------------------------- # SetEnvIfNoCase User-Agent ^$ keep_out # Cette ligne va définir la variable d'environnement keep_out avec l'une # des valeurs citée dans la table ci-dessous si le champ d'en-tête de requête # User-Agent: est présent et contient une ou une autre combinaison des mêmes # caractères, sans tenir compte de la casse. #------------------------------------------------------------ <IfModule mod_setenvif.c> SetEnvIfNoCase User-Agent (ZoominfoBot|ptalebot|binlar|casper|cmsworldmap|comodo|diavol|dotbot|feedfinder|flicky|ia_archiver|jakarta|kmccrew|nutch|planetwork|purebot|pycurl|skygrid|sucker|turnit|vikspider|zmeu) keep_out <limit GET POST PUT> Order Allow,Deny Allow from all Deny from env=keep_out </limit> </IfModule> #---------------------------------------------------------------- # 5G:[REQUEST STRINGS] #---------------------------------------------------------------- <IfModule mod_alias.c> RedirectMatch 403 (https?|ftp|php)\:// RedirectMatch 403 /(https?|ima|ucp)/ RedirectMatch 403 /(Permanent|Better)$ RedirectMatch 403 (\=\\\'|\=\\%27|/\\\'/?|\)\.css\()$ RedirectMatch 403 (\,|\)\+|/\,/|\{0\}|\(/\(|\.\.\.|\+\+\+|\||\\\"\\\") RedirectMatch 403 \.(cgi|asp|aspx|cfg|dll|exe|jsp|mdb|sql|ini|rar)$ RedirectMatch 403 /(contac|fpw|install|pingserver|register)\.php$ RedirectMatch 403 (base64|crossdomain|localhost|wwwroot|e107\_) RedirectMatch 403 (eval\(|\_vti\_|\(null\)|echo.*kae|config\.xml) RedirectMatch 403 \.well\-known/host\-meta RedirectMatch 403 /function\.array\-rand RedirectMatch 403 \)\;\$\(this\)\.html\( RedirectMatch 403 proc/self/environ RedirectMatch 403 msnbot\.htm\)\.\_ RedirectMatch 403 /ref\.outcontrol RedirectMatch 403 com\_cropimage RedirectMatch 403 indonesia\.htm RedirectMatch 403 \{\$itemURL\} RedirectMatch 403 function\(\) RedirectMatch 403 labels\.rdf RedirectMatch 403 /playing.php RedirectMatch 403 muieblackcat </IfModule> #---------------------------------------------------------------- # 5G:[REQUEST METHOD] #---------------------------------------------------------------- <ifModule mod_rewrite.c> RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) RewriteRule .* - [F] </IfModule> #---------------------------------------------------------------- # BLOCK SPAMBOTS START #---------------------------------------------------------------- <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} ^(.*)?wp-comments-post\.php(.*)$ RewriteCond %{HTTP_REFERER} !^http(s)?://(.*)?\.milbako\.com/mbk [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule .* http://127.0.0.1 [L] </IfModule> #---------------------------------------------------------------- # PREVENT IMAGE HOTLINKS # Empêcher les hotlinks d'image: # Malheureusement, pour les personnes dont les images ont été liées # par d'autres sites Web, elles remarqueront probablement une augmentation # de l'utilisation des ressources de leur serveur, car le nouveau site # utilisant ces images utilisera les ressources de votre serveur. # Heureusement, vous pouvez éviter cela en activant la protection par hotlink # sur votre site. Voici comment suivre le processus d'activation de la protection # par hotlink sur votre site. #---------------------------------------------------------------- <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{REQUEST_FILENAME} -f RewriteCond %{REQUEST_FILENAME} \.(gif|jpe?g?|png)$ [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(.*)?\.milbako\.com/mbk [NC] RewriteRule \.(gif|jpe?g?|png)$ - [F,NC,L] </IfModule> #---------------------------------------------------------------- # BEGIN WordPress # Les directives (lignes) entre « BEGIN WordPress » et « END WordPress » sont générées # dynamiquement, et doivent être modifiées uniquement via les filtres WordPress. # Toute modification des directives situées entre ces marqueurs sera surchargée. #---------------------------------------------------------------- <IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase /mbk/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /mbk/index.php [L] </IfModule> #---------------------------------------------------------------- # END WordPress #----------------------------------------------------------------
Sécurisez et protégez votre site Web WordPress
Chaque site Web WordPress a besoin d’une solide stratégie de sauvegarde et de sécurité. Avec BackupBuddy, notre plugin de sauvegarde WordPress, et iThemes Security Pro, notre plugin de sécurité WordPress, vous bénéficiez de sauvegardes et de sécurité… plus la tranquillité d’esprit que votre contenu est en sécurité.
Merci de votez pour cet article :