25 règles .htaccess, dont tout le monde devrait savoir développeur Web

Par thème:


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


Avant de commencer, je voudrais attirer votre attention sur le fait que l'abus de l'utilisation de .htaccess peut entraîner de mauvaises performances de votre site web. La règle principale est d'utiliser .htaccess pour la mise en œuvre de tel ou tel problème est que dans le cas s'il n'y a pas d' autres options.

Assurez-vous que vous avez une sauvegarde du fichier original .htaccess pour votre site avant de faire des changements. Aussi, rappelez-vous - fonctionnement les règles suivantes dépend des réglages individuels de votre serveur web hôte spécifié. Certaines directives peuvent être interdites et peuvent ne pas fonctionner.

.htaccess (de l'accès English hypertexte ..) - fichier de configuration supplémentaire du serveur web Apache et le serveur comme lui. Il vous permet de définir un grand nombre de paramètres et autorisations du serveur Web dans des répertoires distincts (dossiers), tels que l'accès contrôlé à des répertoires, de redirection de types de fichiers, etc., supplémentaires sans modifier le fichier de configuration maître.

Fichier .htaccess peut être placé dans un répertoire quelconque. Les directives dans ce fichier sont applicables à tous les fichiers dans le répertoire courant et tous ses sous-répertoires (si ces directives sont des directives redéfinies sous-jacentes fichier .htaccess).

Pour que ces fichiers pour pouvoir utiliser .htaccess, le réglage approprié du fichier de configuration principal (la valeur de la directive AllowOverride doit être réglé sur All). En règle générale, la grande majorité des hôtes autorisés à utiliser vos fichiers .htaccess.

1. Ne pas télécharger des fichiers à partir de sites externes

Êtes-vous fatigué des gens qui affichent des photos publiées sur votre site - sur leurs ressources, gaspillant ainsi votre trafic et la création d'un fardeau inutile sur votre hébergement? Ce code est placé à la fin de votre fichier .htaccess, permettra d'éviter le téléchargement de vos images - sites tiers.

	 Options + FollowSymlinks
	 télécharger des fichiers # Bloquer des 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] 

Ne pas oublier de changer site.com à votre nom de domaine et créer une image de stop.gif à afficher à la place des images demandées.

2. bloquer toutes les demandes non sollicitées provenant d'agents de l'utilisateur

Cette règle permet de bloquer l'agent utilisateur indésirable, qui peut être potentiellement dangereux ou simplement surcharger le serveur avec les requêtes inutiles.

  # Bloquer les mauvais robots et robots
 SetEnvIfNoCase user-agent ^ FrontPage [NC, OR]
 SetEnvIfNoCase user-agent ^ Java. * [NC, OR]
 SetEnvIfNoCase user-agent ^ Microsoft.URL [NC, OR]
 SetEnvIfNoCase user-agent ^ MSFrontPage [NC, OR]
 SetEnvIfNoCase user-agent ^ Offline.Explorer [NC, OR]
 SetEnvIfNoCase user-agent ^ [Ww] eb [Bb] etil [NC, OR]
 SetEnvIfNoCase user-agent ^ Zeus [NC]
 Commande Autoriser, Refuser
 Permettre de tous
 Deny from env = bad_bot

Liste des utilisateurs Agent navigateurs, robots et les araignées des moteurs de recherche, annuaires du web, gestionnaire de téléchargement, les robots collecteurs de mails et de mauvais bots peuvent être trouvées à la liste des User-Agents.

3. Pour refuser l'accès à tout le monde, sauf les adresses IP spécifiées

Si pour une raison quelconque vous souhaitez désactiver tout ou autoriser l'accès IP-address séparé pour votre site - ajouter ce code à votre .htaccess fichier:

	 # Refuser l'accès à tout le monde, sauf les adresses IP spécifiées
	 ErrorDocument 403 http://www.domainname.com
	 Ordre deny, allow
	 Refuser de tous
	 Permettre de 124.34.48.165
	 Permettre de 102.54.68.123 

Ne pas oublier de changer domainname.com sur votre nom de domaine.

4. Mettre en place SEO-Friendly 301 Redirect

Si vous déplacez un nom de domaine (ou un sous-site), ou que vous souhaitez rediriger l'utilisateur vers une page spécifique (s), sans sanctions par les moteurs de recherche en utilisant ce code:

	 # Mettre en place SEO-Friendly 301 Redirect
	 Rediriger 301 /1/file.html http://www.site.com/2/file.html 

Ne pas oublier de changer site.com à votre nom de domaine, et /1/file.html et /2/file.html les répertoires et les pages pertinentes.

5. Créez vos propres pages d'erreur

Lassé de la forme standard de pages d'erreur? Pas de problème - avec le code suivant, vous pouvez facilement créer leur propre page et montrer à l'utilisateur exactement ça:

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

<Veillez à créer dans le dossier d'erreur de répertoire racine de votre serveur et le placer dans les fichiers appropriés. / P>

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

Fatigué des commentaires de spam, ou un utilisateur particulier? Il suffit de bloquer l'IP avec le code suivant ajouté au .htaccess fichier.

	 # Créer une liste noire des adresses IP
	 permettre de toute
	 deny from 145.186.14.122
	 refuser de 124.15. 

En savoir commentateurs adresse IP peut être soit dans les logs Apache ou en utilisant le service de statistiques. Beaucoup CMS ont leurs propres outils intégrés pour surveiller les adresses des visiteurs. Par exemple, dans les commentateurs Drupal adresses IP peuvent être trouvés dans le panneau d'administration - Rapports.

7. Installez l'adresse e-mail à l'administrateur par défaut

Utilisez ce code pour définir l'adresse e-mail par défaut pour l'administrateur du serveur.

	 # Définissez l'adresse e-mail à l'administrateur par défaut
	 ServerSignature EMail
	 SetEnv SERVER_ADMIN [email protected] 

Ne pas oublier de remplacer [email protected] - votre adresse e-mail.

8. protéger certains fichiers

Le code suivant permet de refuser l'accès à tout fichier - à la demande sera donnée une erreur 403. Par exemple, je fermai l'accès au fichier htaccess, élever le niveau global de sécurité du site.

  # Protéger fichier .htaccess
 pour permettre, refuser
 deny from all

9. Compresser articles utilisant mod_deflate

Comme une alternative à l'aide de fichiers compressés Gzip, vous pouvez utiliser mod_deflate (probablement plus rapide). Placez le code suivant au début de votre fichier .htaccess (ou vous pouvez ajouter une liste .jpg | .gif | .png | .tiff | Ico):

  articles # Compresser utilisant mod_deflate
 SetOutputFilter DEFLATE

10. Ajout de la durée de vie des titres

Ce code vous permet d'ajouter une chronologie de la vie dans les titres:

  # Ajouter les titres à vie
 jeu d'en-tête Expire «Wed, 21 mai 2010 20:00:00 GMT»

11. Réglez la page par défaut

En règle générale, la page par défaut est index.html, mais en utilisant ce code, vous pouvez définir la valeur par défaut de toute autre page.

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

12. dossiers protégés par mot de passe et les fichiers

Vous pouvez activer l'authentification par mot de passe pour l'accès à tout dossier ou fichier sur votre serveur, en utilisant le code suivant:

  # Protection par mot de passe du fichier
 AuthType Basic
 AuthName «Prompt»
 AuthUserFile /pub/home/.htpasswd
 Require valid-user
 # Mot de passe protéger des dossiers
	 réside
	 AuthType de base
	 AuthName «Ce répertoire est protégé»
	 AuthUserFile /pub/home/.htpasswd
	 AuthGroupFile / dev / null
	 Require valid-user 

Afin de permettre l' accès au fichier avec un mot de passe, vous devez créer un fichier .htpasswd et ajoutez-y un couple de login et mot de passe dans le format utilisateur: mot de passe.

Cependant, dans ce cas, les mots de passe sont stockés en texte clair, ce qui est pas très bon en termes de sécurité. Par conséquent, le mot de passe crypté optimal. Pour cela, utilisez les dossiers des services pour générer des fichiers .htpasswd. Par exemple, comme celui - ci .

Dans cet exemple, le fichier de mot de passe est l'accès au répertoire racine d'un site appelé .htpasswd. Le répertoire est spécifié à partir de la racine du serveur, et si le chemin est incorrect - Apache, ne permet pas d' accéder au fichier, refuser l' accès à tout dossier utilisateur - que Chiles et celui qui a introduit la bonne paire de connexion: mot de passe.

13. Redirect de l'ancien domaine - nouveau

Utilisation de .htaccess, vous pouvez configurer une redirection de l'ancien domaine vers le nouveau, en ajoutant le code suivant:

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

Redirection est utilisé si vous transférez votre site existant à un nouveau nom de domaine. Dans ce cas, tout utilisateur qui compose dans la barre d'adresse www.old.com - sera redirigé vers www.new.com.

14. Améliore la mise en cache

En utilisant cette règle ne signifie pas une accélération de téléchargement direct de votre site. Il est conçu pour accélérer le chargement du site - pour lui déjà visité le visiteur en envoyant 304 état pour les éléments qui ne sont pas mises à jour.

  # Renforce la mise en cache
 FileETag MTime Taille
 ExpiresActive sur
 ExpiresDefault «accès plus 1 année"

Ainsi, lorsque vous rechargez la page du navigateur du visiteur ne sera pas re-télécharger des images, des scripts et CSS, et affiche les fichiers qui sont déjà stockés dans sa mémoire cache. Vous pouvez modifier la durée de vie du cache, en ajustant sa valeur au cours des années (année), mois (mois) ou, par exemple - secondes (secondes). Exemple Set 1 an.

15. composants Compresser en incluant le site Gzip

En utilisant Gzip, le serveur va compresser les fichiers avant de les envoyer à l'utilisateur, ce qui explique pourquoi votre site se charge plus rapidement.

	 # Compresser composants en incluant le site Gzip
	 AddOutputFilterByType DEFLATE texte text / html / plain ..
	 .. Texte / xml demande application / xml / xhtml + xml .. 
	 .. Texte / javascript text / css application / x-javascript
	 BrowserMatch ^ Mozilla / 4 gzip-only-text / html
	 BrowserMatch ^ Mozilla / 4.0 [678] no-gzip
	 BrowserMatch bMSIE! No-gzip! Gzip-only-text / html 

Notez s'il vous plaît que l'inclusion de la compression entraîne une plus grande charge sur le processeur de serveur. Il ligne de AddOutputFilterByType est enregistré dans une longue ligne avec deux inférieurs (tous .. doit être retiré).

16. Retirez la «catégorie» dans l'URL

Pour modifier les liens sur yourdomain.com/blue yourdomain.com/category/blue, il suffit d' ajouter le code suivant à la fin de votre fichier .htaccess.

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

Ne pas oublier de changer www.site.com sur votre nom de domaine.

17. Ne pas afficher le contenu d'un dossier

Pour restreindre l'accès à des répertoires qui peuvent contenir une variété d'informations et pour assurer la sécurité du serveur, ajouter ce code dans le fichier .htaccess

	 # Refuse d'afficher le contenu d'un dossier
	 Options Tous -Indexes 

18. Rediriger votre flux RSS à FeedBurner

Nous allons montrer comment le faire sur l'exemple de Drupal RSS-bande sur le service Google Feedburner.

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

Dans un premier temps , vous devez enregistrer un flux de votre blog lorsque Feedburner . Ensuite, ne pas oublier de remplacer yourfeed sur votre nom de bande est déjà dans Feedburner.

19. commentaires Forbid des utilisateurs sans Referrer

Les robots collecteurs de mails les plus courants se réfèrent directement aux commentaires de fichiers, tels que wp-comments-post.php, sans aller à la page des enregistrements de votre blog. Le code suivant vous permet de bloquer les commentaires envoyés par les utilisateurs qui sont venus "de nulle part", ne permettant que des commentaires sur ces lecteurs qui sont passés à une page sur votre blog avec toutes les autres pages (par exemple, les résultats de recherche Google).

	 # Interdisez commentaires des utilisateurs sans Referrer
	 RewriteEngine On
	 RewriteCond% {REQUEST_METHOD} POST
	 RewriteCond% {REQUEST_URI} .comment \ / réponse \ / *
	 RewriteCond% {HTTP_REFERER} !. * Yourblog.com. * [OR]
	 RewriteCond% {HTTP_USER_AGENT} ^ $
	 (. *) RewriteRule ^ Http: //% {REMOTE_ADDR} / $ [R = 301, L] 

Ne pas oublier de remplacer yourblog.com sur le nom de domaine de votre blog.

20. Retirez l'extension de fichier à partir de l'URL

Ce code vous permet de supprimer l'extension de fichier .php (vous pouvez le modifier à tout autre, par exemple - .html) de l'adresse URL de la page.

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

21. site Protect

Ce code vous permet de protéger le site de scripts indésirables enjection et _request modifications et / ou GLOBALS:

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

22. visiteurs de redirection utilisant la directive RedirectMatch et des expressions régulières

Une autre directive utile est recommandé d'utiliser - RedirectMatch. Citation: "Cette directive permet à une adresse demandée à utiliser une expression régulière (ne pas envoyer" un document ", et" tous les documents, tels que ... »). Rediriger apparence - le navigateur est informé de la nécessité de charger une autre page.

Syntaxe:

	 RedirectMatch [état] regexp URL 

Les valeurs de l'état (code du serveur Web retour) norme:

permanent (301 - redirection permanente), la température (302 - redirection temporaire, viennent à nouveau), seeother (303 - pour voler, il y a beaucoup de délicieux), allé (410 - pour toujours).

exemple:

La même redirection de l'ancien domaine de la nouvelle connexion sans RewriteEngine:

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

J'ajouterais que vous pouvez utiliser non seulement http-état, mais aussi d' autres conditions:

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

Assurez-vous de faire une copie de sauvegarde du fichier .htaccess avant de faire des changements, puis tester l'ensemble du site - après l'ajout de nouvelles lignes.

23. Protection de liens directs vers des images via .htaccess

Hotlink (Hotlink) - insérer les liens d'images en direct ou des fichiers d'un site à l'autre. Cette technique est utilisée assez souvent, ainsi, par exemple, sur votre serveur ne dispose pas de suffisamment d'espace pour les photos et que vous utilisez un service gratuit pour le stockage des fichiers d'image, à savoir, télécharger une photo, vous obtenez l'URL et collez-le dans votre site web.

Le résultat: vous économiser de l'espace pour votre site et utiliser la bande passante pour l'hébergement de photos, mais ce ne sont pas vos affaires. Mais si quelqu'un a décidé que votre site peut être utilisé comme un service similaire.

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

Y at-il la protection de celui-ci? Oui, il est! Pour éviter d' autres sites Web pour utiliser votre trafic et / ou tout simplement relier directement à vos fichiers (images), puis ajouter les lignes suivantes à votre fichier .htaccess:

	 # Désactiver d'autres sites utilisent des liens directs vers vos photos
	 RewriteCond% {HTTP_REFERER}! ^ $
	 # Ensuite, la liste des domaines autorisés
	 % RewriteCond {HTTP_REFERER} ^ http (s):. (. Www) ?? // sitename.ru * $ [NC]
	 RewriteCond% {HTTP_REFERER} ^ http (s):? // (Www.) Sitename.ru:?. 80 * $ [NC]
	 Site IP # (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.) [NC] sayta.ru Domen_druzhestvennogo?
	 RewriteCond% {HTTP_REFERER}! Rechercher? Q = cache [NC]
	 # Les formats de fichiers pour lesquels la protection est réglé
	 # Prints 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 au lieu des spectacles ci-dessus spetsrisunok
	 . RewriteRule * \ (jpe g |? Bmp | gif | png). Fichiers $ / images / nohotlink.jpg [NC, L] 

En conséquence, tous les autres sites auront un 403 Forbidden (accès refusé), et votre bande passante est plus "ne fonctionne pas pour les autres."

24. ImageCache et la protection contre les hotlinks par .htaccess

Pour ImageCache le paragraphe précédent ne fonctionne pas, nous avons donc ajouter les paramètres suivants:

  SetEnvIfNoCase Referer «^ $» local_ref = 1
 # autorisés domaines
 # Suivant accepté domaines
 SetEnvIfNoCase Referer «^ http // :? (. Www \) domaine \ .ru» local_ref = 1
 SetEnvIfNoCase Referer «^ http: // (. Www \) Domaine \ .com» Local_ref = 1
 Les extensions de fichier # que vous souhaitez protéger
 Les extensions de fichier # que vous souhaitez protéger
 Commande Autoriser, Refuser
 Allow from env = local_ref

Maintenant que nous avons et protection contre les hotlinks et le module ImageCache - ensemble , ils fonctionnent parfaitement. Un «mais» - de telle manière que vous ne pouvez pas tourner pour donner une autre image; seulement pour protéger son image, ce qui est le but principal.