This page has been robot translated, sorry for typos if any. Original content here.

25 règles .htaccess que tout développeur Web devrait connaître

Par sujet:


Файл-конфигуратор Apache-серверов .htaccess


Avant de commencer, j'attire votre attention sur le fait que l'abus de .htaccess peut entraîner une baisse des performances de votre site. La règle principale: utiliser .htaccess pour la mise en oeuvre d'une tâche particulière est uniquement s'il n'y a pas d'autres options.

Assurez-vous de sauvegarder le fichier .htaccess d'origine de votre site avant d'apporter des modifications. De plus, n'oubliez pas que le fonctionnement des règles ci-dessous dépend des paramètres individuels de votre serveur Web, spécifiés par l'hébergeur. Certaines directives peuvent être interdites et ne pas fonctionner.

.htaccess (from. English Hypertext Access) - Fichier de configuration supplémentaire pour le serveur Web Apache, ainsi que pour des serveurs similaires. Vous permet de définir un grand nombre de paramètres et d'autorisations supplémentaires pour le serveur Web dans des répertoires distincts (dossiers), tels que l'accès géré aux répertoires, la réaffectation de types de fichiers, etc., sans modifier le fichier de configuration principal.

Le fichier .htaccess peut être placé dans n’importe quel répertoire . Les directives de ce fichier affectent tous les fichiers du répertoire en cours et de tous ses sous-répertoires (à moins que ces directives ne soient remplacées par les directives des fichiers .htaccess sous-jacents).

Pour que ces fichiers .htaccess puissent être utilisés, les paramètres appropriés du fichier de configuration principal sont nécessaires (la valeur de la directive AllowOverride doit être définie sur All ). En règle générale, la grande majorité des hébergeurs sont autorisés à utiliser leurs fichiers .htaccess.

1. Nous interdisons le téléchargement de fichiers à partir de sites externes

Êtes-vous fatigué des personnes qui publient des photos publiées sur votre site - sur leurs propres ressources, consommant ainsi votre trafic et créant une charge inutile sur votre hébergement? Ce code, situé à la fin de votre fichier .htaccess, empêchera les sites tiers de télécharger vos images.

	 Options + SuivreSymlinks
	 # Nous interdisons le téléchargement de fichiers à partir de sites externes
	 RewriteEngine On
	 RewriteCond% {HTTP_REFERER}! ^ $
	 RewriteCond% {HTTP_REFERER}! ^ Http: // (www.)? Site.com/ [nc]
	 RewriteRule. *. (Gif | jpg | png) $ http://site.com/stop.gif[nc] 

N'oubliez pas de changer site.com en votre nom de domaine et de créer une image stop.gif qui sera affichée à la place de la photo demandée.

2. Bloquez toutes les demandes d'agents utilisateurs indésirables.

Cette règle vous permet de bloquer les agents d'utilisateurs indésirables, qui peuvent être potentiellement dangereux ou simplement surcharger le serveur avec des requêtes inutiles.

  # Bloquer les mauvais robots et les robots
 SetEnvIfNoCase utilisateur-Agent ^ FrontPage [NC, OU]
 SetEnvIfNoCase utilisateur-Agent ^ Java. * [NC, OR]
 SetEnvIfNoCase utilisateur-Agent ^ Microsoft.URL [NC, OU]
 SetEnvIfNoCase utilisateur-Agent ^ MSFrontPage [NC, OR]
 SetEnvIfNoCase utilisateur-Agent ^ Offline.Explorer [NC, OR]
 SetEnvIfNoCase utilisateur-Agent ^ [Ww] eb [Bb] andit [NC, OR]
 SetEnvIfNoCase utilisateur-Agent ^ Zeus [NC]
 Ordre Autoriser, Refuser
 Autoriser de tous
 Refuser de env = bad_bot

Une liste des agents utilisateurs pour les navigateurs, les robots et les moteurs de recherche, les annuaires Web, les gestionnaires de téléchargement, les robots anti-spam et les robots malveillants est disponible sur le site Web de la liste des agents utilisateurs.

3. Nous interdisons l'accès à tous, à l'exception des adresses IP spécifiées

Si, pour une raison quelconque, vous souhaitez tout refuser ou autoriser uniquement des adresses IP individuelles à accéder à votre site, ajoutez ce code à votre fichier .htaccess:

	 # Refuser l'accès à tous sauf aux adresses IP spécifiées
	 ErrorDocument 403 http://www.domainname.com
	 Ordre nier, permettre
	 Refuser à tous
	 Autoriser à partir de 124.34.48.165
	 Autoriser à partir de 102.54.68.123 

N'oubliez pas de changer domainname.com en votre nom de domaine.

4. Configurez SEO-Friendly 301 Redirect

Si vous avez transféré un nom de domaine (ou votre propre sous-site) ou souhaitez rediriger l'utilisateur vers une ou des pages spécifiques, sans sanctions des moteurs de recherche, utilisez ce code:

	 # Personnaliser SEO-Friendly 301 Redirect
	 Redirect 301 /1/file.html http://www.site.com/2/file.html 

N'oubliez pas de changer site.com en votre nom de domaine et /1/file.html et /2/file.html en répertoires et pages appropriés.

5. Créez vos propres pages d'erreur.

Êtes-vous fatigué de la vue standard des pages d'erreur? Aucun problème - avec le code suivant, vous pouvez facilement créer votre propre page et la montrer à l'utilisateur:

	 ErrorDocument 401 /error/401.php
	 ErrorDocument 403 /error/403.php
	 ErrorDocument 404 /error/404.php
	 ErrorDocument 500 /error/500.php 

<N'oubliez pas de créer un dossier d'erreur dans le répertoire racine de votre serveur et d'y placer les fichiers appropriés. / P>

6. Créez une liste noire d'adresses IP

Fatigué des commentaires de spam ou d'un utilisateur spécifique? Bloquez simplement son adresse IP avec le code suivant ajouté au fichier .htaccess.

	 # Créer une liste noire d'adresses IP
	 permettre à tous
	 refuser à partir de 145.186.14.122
	 124.15. 

Vous pouvez trouver les adresses IP des commentateurs dans les journaux Apache ou à l'aide des services de statistiques. De nombreux CMS ont leurs propres outils intégrés pour surveiller les adresses des visiteurs. Par exemple, dans Drupal, les adresses IP des commentateurs sont visibles dans le panneau d'administration - Rapports.

7. Définissez l'adresse de messagerie par défaut pour l'administrateur.

Utilisez ce code pour définir l'adresse électronique par défaut de l'administrateur du serveur.

	 # Définir l'adresse mail par défaut pour l'administrateur
	 Courriel de ServerSignature
	 SetEnv SERVER_ADMIN default@domain.com 

N'oubliez pas de remplacer default@domain.com par votre adresse de messagerie.

8. Protéger un fichier spécifique.

Le code suivant vous permet de refuser l’accès à n’importe quel fichier - une erreur 403 sera générée à la demande. Par exemple, j’ai fermé l’accès au fichier htaccess lui-même, augmentant ainsi le niveau de sécurité global du site.

  # Protéger le fichier .htaccess
 ordre permet, nie
 nier de tout

9. Compresser les éléments avec mod_deflate

Au lieu de compresser des fichiers avec Gzip, vous pouvez utiliser mod_deflate (cela fonctionne probablement plus rapidement). Placez le code suivant au début de votre fichier .htaccess (vous pouvez également ajouter des énumérations .jpg | .gif | .png | .tiff | .ico):

  # Compression d'éléments avec mod_deflate
 SetOutputFilter DEFLATE

10. Ajouter de la vie aux en-têtes

Ce code vous permet d'ajouter des durées de vie aux en-têtes:

  # Ajouter la durée de vie aux en-têtes
 Les en-têtes expirent le "mercredi 21 mai 2010 à 20h00 (GMT)"

11. Définir les pages par défaut

La page par défaut est généralement index.html. Toutefois, avec ce code, vous pouvez configurer toute autre page par défaut.

	 # Définir une page alternative par défaut
	 DirectoryIndex about.html 

12. Protégez les dossiers et les fichiers avec un mot de passe.

Vous pouvez activer la vérification du mot de passe pour accéder à tout dossier ou fichier sur votre serveur en utilisant ce code:

  # protection du mot de passe du fichier
 AuthType Basic
 AuthName "Invite"
 AuthUserFile /pub/home/.htpasswd
 Exiger un utilisateur valide
 # mot de passe protéger les dossiers
	 réside
	 AuthType basic
	 AuthName "Ce répertoire est protégé"
	 AuthUserFile /pub/home/.htpasswd
	 AuthGroupFile / dev / null
	 Exiger un utilisateur valide 

Pour organiser l'accès au fichier avec un mot de passe, vous devez créer un fichier .htpasswd et entrer la paire login-password dans le format utilisateur: mot de passe .

Cependant, dans ce cas, les mots de passe seront stockés en texte clair, ce qui n’est pas très bon du point de vue de la sécurité. Par conséquent, le meilleur mot de passe pour chiffrer. Pour ce faire, utilisez les services pour générer des enregistrements dans des fichiers .htpasswd. Par exemple, comme ça .

Dans notre exemple, le fichier avec les mots de passe d'accès se trouve dans le répertoire racine du site et s'appelle .htpasswd. Le répertoire est spécifié à partir de la racine du serveur et si le chemin est incorrect - Apache, n'ayant pas reçu l'accès au fichier, refusera l'accès au dossier à tout utilisateur - dans les chiles et celui qui a entré la bonne paire login: password .

13. Redirection de l'ancien domaine vers le nouveau.

À l'aide de .htaccess, vous pouvez configurer la redirection de l'ancien nom de domaine vers le nouveau en ajoutant le code suivant:

	 # Redirection de l'ancien domaine old.com vers le nouveau
	 RewriteEngine On
	 RewriteRule ^ (. *) $ Http://www.new.com/$1 [R = 301, L] 

La redirection est utilisée si vous transférez votre site existant vers un nouveau nom de domaine. Dans ce cas, tout utilisateur qui saisit la barre d’adresse www.old.com sera redirigé vers www.new.com.

14. Renforcer la mise en cache

L'utilisation de cette règle ne signifie pas une accélération directe du chargement de votre site. Il est destiné à un chargement plus rapide du site - pour un visiteur qui l’a déjà visité, en lui envoyant le statut 304 pour les éléments qui n’ont pas été mis à jour.

  # Améliorer la mise en cache
 Taille de FileETag MTime
 ExpiresActif sur
 ExpiresDefault "accès plus 1 an"

Ainsi, lors du rechargement de la page, le navigateur du visiteur ne téléchargera pas à nouveau des images, des scripts ou des feuilles de style CSS, mais générera les fichiers déjà stockés dans son cache. Vous pouvez modifier la durée de vie du cache en ajustant sa valeur en années (année), mois (mois) ou, par exemple, secondes (secondes). Dans l'exemple, 1 année est indiquée.

15. Compression des composants du site en incluant Gzip

Lors de l'utilisation de Gzip , le serveur compresse les fichiers avant de les envoyer à l'utilisateur, ce qui signifie que votre site se chargera plus rapidement.

	 # Presser les composants du site en activant gzip
	 AddOutputFilterByType DEFLATE text / html text / plain ..
	 .. text / xml application / xml application / xhtml + xml .. 
	 .. text / javascript text / css application / x-javascript
	 BrowserMatch ^ Mozilla / 4 gzip-only-text / html
	 BrowserMatch ^ Mozilla / 4.0 [678] pas de gzip
	 BrowserMatch bMSIE! No-gzip! Gzip-only-text / html 

Veuillez noter que l'inclusion de la compression entraînera une charge plus importante sur le processeur du serveur. Ici, la chaîne AddOutputFilterByType est écrite en une longue ligne avec les deux derniers (tous .. vous devez supprimer).

16. Supprimer la «catégorie» de l'URL

Pour changer le lien votredomaine.com/category/blue vers votredomaine.com/bleu , ajoutez simplement le code suivant à la fin de votre fichier .htaccess .

	 # Supprimer la catégorie de l'URL
	 RewriteRule ^ category /(.+)$ http://www.site.com/$1 [R = 301, L] 

Assurez-vous de changer www.site.com en votre nom de domaine.

17. Nous interdisons la visualisation du contenu d'un dossier.

Afin de restreindre l'accès aux répertoires pouvant contenir diverses informations et d'assurer la sécurité du serveur, ajoutez ce code au fichier .htaccess.

	 # Ne pas afficher le contenu d'un dossier
	 Options All —Indexes 

18. Rediriger votre flux RSS vers FeedBurner

Montrons comment cela peut être fait sur l'exemple du flux RSS Drupal pour le service Google Feedburner.

  # Rediriger le flux RSS Drupal vers FeedBurner
 RewriteEngine on
 RewriteCond% {HTTP_USER_AGENT}! FeedBurner [NC]
 RewriteCond% {HTTP_USER_AGENT}! FeedValidator [NC]
 RewriteRule ^ rss.xml $ http://feeds.feedburner.com/yourfeed [R = 302, NC, L]

Initialement, vous devez enregistrer votre flux de blog avec Feedburner . Ensuite, n'oubliez pas de remplacer yourfeed par le nom de votre flux déjà dans Feedburner.

19. Interdire les commentaires des utilisateurs sans Referrer

Le plus souvent, les robots collecteurs de spam accèdent directement au fichier de commentaires, par exemple wp-comments-post.php , sans consulter les pages des entrées de votre blog. Le code ci-dessous vous permet de bloquer les commentaires envoyés par les utilisateurs venus "de nulle part", vous permettant ainsi de ne commenter que les lecteurs qui ont accédé à votre page de blog depuis d'autres pages (par exemple, les résultats de recherche Google).

	 # Interdire les commentaires des utilisateurs sans Referrer
	 RewriteEngine On
	 RewriteCond% {REQUEST_METHOD} POST
	 RewriteCond% {REQUEST_URI} .comment \ / reply \ / *
	 RewriteCond% {HTTP_REFERER}!. * Votre blog.fr. * [OU]
	 RewriteCond% {HTTP_USER_AGENT} ^ $
	 RewriteRule (. *) ^ Http: //% {REMOTE_ADDR} / $ [R = 301, L] 

N'oubliez pas de remplacer yourblog.com par le nom de domaine de votre blog.

20. Supprimer l'extension de fichier de l'URL

Ce code vous permet de supprimer l'extension du fichier .php (vous pouvez le remplacer par n'importe quel autre, par exemple - .html) des URL des pages.

	 # Supprimer l'extension de fichier de l'URL
	 RewriteRule ^ (([^ /] + /) * [^.] +) $ /$1.php [L] 

21. Protéger le site

Ce code vous permet de protéger le site de la suppression de scripts et des modifications non désirées _REQUEST et / ou GLOBALS:

  # Activer le suivi des liens sim
 Options + SuivreSymLiens
 # Run url_rewriting
 RewriteEngine On
 # Bloquer tous les liens contenant <script>
 RewriteCond% {QUERY_STRING} (\ <|% 3C). * Script. * (\> |% 3E) [NC, OU]
	 # Bloquez tous les scripts qui tentent de modifier les variables PHP Globals:
	 RewriteCond% {QUERY_STRING} GLOBALES (= | \ [| \% [0-9A-Z] {0,2}) [OU]
	 # Bloquez tous les scripts qui tentent de changer la variable _REQUEST:
	 RewriteCond% {QUERY_STRING} _REQUEST (= | \ [| \% [0-9A-Z] {0,2})
	 # Rediriger tous similaire à la page avec l'erreur 403 - est interdite
	 RewriteRule ^ (. *) $ Index.php [F, L] 

22. Redirection du visiteur à l'aide de la directive RedirectMatch et d'expressions régulières

RedirectMatch est un autre guide utile recommandé. Citation: "Cette directive autorise l'utilisation d'une expression régulière en tant qu'adresse demandée (l'envoi n'est pas" à partir du document ", mais" à partir de tous les documents, tels que ... "). Redirection externe - le navigateur est informé de la nécessité de charger une autre page.

Syntaxe:

	 RedirectMatch [status] regexp URL 

Les valeurs d'état (code de retour du serveur Web) sont standard:

permanent (301 - redirection permanente), temp (302 - redirection temporaire, revenez), seeother (303 - volez là-bas, il y a beaucoup de savoureux), parti (410 - supprimé pour toujours).

Exemple:

La même redirection de l'ancien domaine vers le nouveau sans connecter RewriteEngine:

	 RedirectMatch 301 ^ (. *) $ Www.domainname.com/$1 

De moi-même, j'ajouterai que vous pouvez utiliser non seulement les statuts http , mais également d'autres conditions:

	 RedirectMatch (. *) \. Gif $ http: //www.myserver.com$1.png
	 RedirectMatch (. * \. Jpg) $ http: //www.myanother.com$1 

Veillez à sauvegarder le fichier .htaccess avant d'apporter des modifications et à vérifier les performances de l'ensemble du site, après l'ajout de nouvelles lignes.

23. Protection contre les liens directs pour les images via .htaccess

Hotlink (Hotlink) - insère des liens directs vers des images ou des fichiers d'un site à un autre. Cette technique est assez souvent utilisée, par exemple, vous n’avez pas assez d’espace sur votre serveur pour stocker des images et vous utilisez un service gratuit pour stocker des fichiers d’image, c.-à-d. téléchargez une image, obtenez une URL et collez-la dans votre site.

En bout de ligne: vous économisez de la place pour votre site et utilisez de la bande passante d'hébergement pour les images, mais ceci ne vous concerne pas. Mais comment être si quelqu'un décidait que votre site pouvait être utilisé comme un service similaire.

Comment ne pas devenir un fournisseur gratuit d'images et de fichiers?

Existe-t-il une protection contre cela? Oui il y a! Pour empêcher d'autres sites d'utiliser votre trafic et / ou simplement fournir des liens directs vers vos fichiers (images), ajoutez les lignes suivantes à votre fichier .htaccess :

	 # Interdit aux autres sites d’utiliser des liens directs vers vos photos
	 RewriteCond% {HTTP_REFERER}! ^ $
	 # Liste supplémentaire des domaines autorisés
	 RewriteCond% {HTTP_REFERER}! ^ Http (s) ?: // (www.)? Sitename.com. * $ [NC]
	 RewriteCond% {HTTP_REFERER}! ^ Http (s) ?: // (www.)? Sitename.ru: 80. * $ [NC]
	 # IP du site (domaine)
	 RewriteCond% {HTTP_REFERER}! ^ Http (s) ?: //111.111.111.111.*$ [NC]
	 RewriteCond% {HTTP_REFERER}! ^ Http (s) ?: //111.111.111.111: 80. * $ [NC]
	 RewriteCond% {HTTP_REFERER}! ^ Http (s) ?: // (www.)? Yandex.ru [NC]
	 RewriteCond% {HTTP_REFERER}! ^ Http (s) ?: // (www.)? Google.  [NC]
	 # RewriteCond% {HTTP_REFERER}! ^ Http (s) ?: // (www.)? Domain_unriend.ru.ru [NC]
	 RewriteCond% {HTTP_REFERER}! Recherche? Q = cache [NC]
	 # Formats de fichier pour lesquels la protection est définie
	 # Affiche l'erreur 403
	 # RewriteRule \. (Jpe? G | bmp | gif | png | css | mov | swf | dcr | exe | rar | avi | vob | zip | pdf | txt | doc | flv | mp3 | mp4) $ - [NC, F, L]
	 # ou montre un dessin spécial au lieu du spécifié
	 RewriteRule. * \. (Jpe? G | bmp | gif | png) $ fichiers / images / nohotlink.jpg [NC, L] 

En conséquence, tous les autres sites recevront une erreur 403 Forbidden (l' accès est refusé ) et votre bande passante "ne fonctionne plus pour les autres".

24. Protection par ImageCache et Hotlink via .htaccess

Pour ImageCache, l' élément précédent ne fonctionnera pas, nous ajoutons donc les paramètres suivants:

  SetEnvIfNoCase Referer “^ $” local_ref = 1
 # Domaines autorisés
 # Autres domaines autorisés
 SetEnvIfNoCase Referer "^ http: // (www \.)? Domain \. Fr" local_ref = 1
 SetEnvIfNoCase Referer "^ http: // (www \.)? Domain \ .com" local_ref = 1
 # Extensions de fichiers que vous souhaitez protéger
 # Extensions de fichiers à protéger
 Ordre Autoriser, Refuser
 Autoriser à partir d'env = local_ref

Nous avons maintenant à la fois une protection par lien hypertexte et un module ImageCache - ensemble, ils fonctionnent parfaitement. Un «mais» - de la manière dont vous voyez, il ne sera pas possible de produire une autre image; seulement la protection de leurs images, qui est l'objectif principal.