.Les fichiers htaccess sont utilisés pour configurer Apache, ainsi que pour plusieurs autres serveurs Web. Malgré la .htaccess
type de fichier, ce sont simplement des fichiers texte qui peuvent être édités à l’aide de n’importe quel éditeur de texte. Dans cet article, nous examinerons ce qu’ils sont et comment vous pouvez les utiliser dans vos projets..
Veuillez noter que les fichiers .htaccess ne fonctionnent pas sur les systèmes Windows, bien qu'ils puissent être modifiés et téléchargés sur un serveur Web compatible. Sur les systèmes Linux, ils sont masqués par défaut..
Pour travailler avec les fichiers htaccess localement, pour voir comment ils fonctionnent, nous pouvons utiliser XAMPP (ou MAMP) sur le Mac - un paquet qui installe et configure Apache, PHP et MySQL. Pour éditer ces fichiers .htaccess sur Mac, nous devons utiliser un éditeur de texte permettant d’ouvrir des fichiers cachés, tels que TextWrangler..
Un fichier .htaccess suit le même format que le fichier de configuration principal d'Apache: httpd.conf
. De nombreux paramètres pouvant être configurés à l'aide du fichier de configuration principal peuvent également être configurés avec eux, et inversement.
Un paramètre configuré dans un fichier .htaccess remplacera le même paramètre dans le fichier de configuration principal pour le répertoire qui contient le fichier, ainsi que pour tous ses sous-répertoires..
Ils sont parfois appelés fichiers de configuration dynamiques car ils sont lus par le serveur à chaque demande du répertoire dans lequel ils se trouvent. Cela signifie que toute modification apportée à un fichier .htaccess prend effet immédiatement, sans nécessiter de redémarrage du serveur, contrairement aux modifications apportées au fichier de configuration global. Cela signifie également que vous payez une légère baisse de performance pour leur utilisation, mais ils peuvent être utiles lorsque vous n'avez pas accès au fichier de configuration principal du serveur..
Alors maintenant, nous savons tous ce que sont les fichiers .htaccess, comment ils sont édités et utilisés, ainsi que leurs avantages et inconvénients, voyons comment ils peuvent être utilisés et quelques-unes des choses intéressantes qu'ils peuvent faire..
Une utilisation courante des fichiers .htaccess consiste à effectuer des redirections ou à réécrire des URL. Cela peut vous aider avec le référencement après un changement de nom de domaine ou une réorganisation de la structure de fichier, ou peut rendre une longue URL disgracieuse plus conviviale et mémorable..
Une redirection peut être aussi simple que ce qui suit:
Rediriger 301 ^ old \ .html $ http: //localhost/new.html
Ceci définit le code de statut HTTP sur 301 (déplacé de manière permanente) et redirige toutes les demandes vers old.html
de manière transparente à new.html
. Nous utilisons une expression régulière pour faire correspondre l'URL à rediriger, ce qui nous donne un degré de contrôle permettant de garantir que seule l'URL correcte est appariée pour la redirection, tout en ajoutant de la complexité à la configuration et à l'administration de celle-ci. L'URL complète de la ressource à rediriger est obligatoire.
Une règle de réécriture peut être aussi simple que cela:
RewriteEngine sur RewriteRule ^ old \ .html $ new.html
Dans cet exemple, nous fournissons simplement une simple redirection de fichier d'un fichier à un autre, qui sera également effectuée de manière transparente, sans changer ce qui est affiché dans la barre d'adresse. La première directive, RewriteEngine on
, s'assure simplement que le moteur de réécriture est activé.
Pour mettre à jour ce qui est affiché dans la barre d’adresse du navigateur du visiteur, nous pouvons utiliser le R
drapeau à la fin de la RewriteRule
par exemple.
RewriteRule ^ old \ .html $ http: //Hostname/new.html [r = 301]
le r
flag provoque une redirection externe, raison pour laquelle l'URL complète (un exemple d'URL ici) vers la nouvelle page est donnée. Nous pouvons également spécifier le code de statut lorsque vous utilisez le drapeau. Cela provoque la mise à jour de la barre d'adresse dans le navigateur du visiteur.
L’une des utilisations possibles de la réécriture d’URL que j’avais donnée au début de cette section était de rendre les URL inesthétiques (contenant des données de chaîne de requête) plus conviviales pour les visiteurs et les moteurs de recherche. Voyons cela en action maintenant:
RewriteRule ^ products / ([^ /] +) / ([^ /] +) / ([^ /] +) product.php? Cat = 1 $ & marque = 2 $ & prod = 3 $
Cette règle permettra aux visiteurs d'utiliser une URL telle que produits / platines / technique / sl1210, et l'ont transformé en product.php? cat = platines &1 $
, 2 $
et 3 $
respectivement. le [^ /]+
La classe de caractères entre parenthèses signifie qu’elle correspond à tout caractère sauf une barre oblique 1 fois ou plus..
En pratique, la réécriture d'URL peut être (et est généralement) beaucoup plus complexe et permettre des résultats bien supérieurs. La réécriture d'URL est mieux expliquée à l'aide de didacticiels complets, nous ne les verrons donc pas plus en détail ici..
Ce n'est tout simplement pas cool d'afficher la page 404 par défaut. De nombreux sites profitent de l'occasion offerte par un fichier sans erreur pour injecter un peu d'humour dans leur site, mais à tout le moins, les gens s'attendent à ce que la page 404 d'un site corresponde au moins au style et au thème de toute autre page du site..
Très étroitement lié à la réécriture d'URL, la création d'une page d'erreur personnalisée au lieu de la page 404 standard est simple avec un fichier .htaccess:
ErrorDocument 404 "/404.html"
C'est tout ce dont nous avons besoin. chaque fois qu'une erreur 404 se produit, la page spécifiée est affichée. Nous pouvons également configurer les pages à afficher pour de nombreuses autres erreurs de serveur..
En utilisant des fichiers .htaccess, nous pouvons activer la protection par mot de passe de tout fichier ou répertoire, pour tous les utilisateurs, ou en fonction d'éléments comme le domaine ou l'adresse IP. C’est après tout l’une de leurs principales utilisations. Pour empêcher l'accès à un répertoire entier, nous créerions simplement un nouveau fichier .htaccess, contenant le code suivant:
AuthName "Nom d'utilisateur et mot de passe requis" AuthUserFile /path/to/.htpasswd Requiert l'utilisateur valide AuthType Basic
Ce fichier doit ensuite être sauvegardé dans le répertoire que nous souhaitons protéger. le AuthName
directive spécifie le message à afficher dans la boîte de dialogue nom d'utilisateur / mot de passe, le AuthUserFile
devrait être le chemin du fichier .htpasswd. le Exiger
directive spécifie que seuls les utilisateurs authentifiés peuvent accéder au fichier protégé tandis que le AuthType
est réglé sur De base
.
Pour protéger un fichier spécifique, nous pouvons envelopper le code ci-dessus dans un fichier.
directive, qui spécifie le fichier protégé:
AuthName "Nom d'utilisateur et mot de passe requis" AuthUserFile /path/to/.htpasswd Requiert l'utilisateur valide AuthType Basic
Nous avons également besoin d’un fichier .htpasswd pour ces types d’authentification, qui contient une liste de noms d’utilisateur et de mots de passe chiffrés séparés par des points-virgules et permettant d’accéder aux ressources protégées. Ce fichier doit être enregistré dans un répertoire non accessible sur le Web. Il existe une gamme de services pouvant être utilisés pour générer ces fichiers automatiquement car le mot de passe doit être stocké sous forme cryptée..
Une autre utilisation des fichiers .htaccess est de bloquer rapidement et facilement toutes les demandes provenant d’une adresse IP ou d’un agent utilisateur. Pour bloquer une adresse IP spécifique, ajoutez simplement les directives suivantes à votre fichier .htaccess:
ordre permettre, refuser refuser de 192.168.0.1 permettre de tous
le ordre
directive indique à Apache dans quel ordre évaluer les directives autoriser / refuser. Dans ce cas, permettre
est évalué en premier, puis Nier
. le permettre à tous
directive est évaluée en premier (même si elle apparaît après la Nier
directive) et toutes les adresses IP sont autorisées, puis si l'adresse IP du client correspond à celle spécifiée dans Nier
directive, l'accès est interdit. Ceci permet à tout le monde d'entrer sauf l'IP spécifiée Notez que nous pouvons également refuser l’accès à des blocs IP entiers en fournissant une adresse IP plus courte, par exemple. 192.168.
Pour refuser des demandes basées sur l'agent utilisateur, nous pourrions faire ceci:
RewriteCond% HTTP_USER_AGENT ^ OrangeSpider RewriteRule ^ (. *) $ Http: //% REMOTE_ADDR / $ [r = 301, l]
Dans cet exemple, tout client avec un HTTP_USER_AGENT
chaîne commençant par OrangeSpider
(un mauvais bot) est redirigé vers l'adresse d'où il provient. L'expression régulière correspond à n'importe quel caractère (.)
zéro fois ou plus (*)
et redirige vers le % REMOTE_ADDR
variable d'environnement. le l
Le drapeau que nous avons utilisé ici indique à Apache de traiter cette correspondance comme la dernière règle afin de ne pas en traiter d’autres avant d’effectuer la réécriture..
Outre le contrôle de la réponse du serveur à certaines requêtes, nous pouvons également modifier le navigateur du visiteur, par exemple forcer IE à restituer des pages à l'aide d'un moteur de rendu spécifique. Par exemple, nous pouvons utiliser le mod_headers
module, s'il est présent, pour régler le Compatible X-UA
entête:
Ensemble d'en-têtes compatible X-UA "IE = Edge"
Ajouter cette ligne à un fichier .htaccess indiquera à IE d'utiliser le mode de rendu le plus élevé disponible. Comme démontré par HTML5 Boilerplate, nous pouvons également éviter de définir cet en-tête sur les fichiers qui n'en ont pas besoin en utilisant un
En-tête non défini compatible X-UA
La mise en cache est facile à configurer et peut accélérer le chargement de votre site..
La mise en cache est facile à configurer et peut accélérer le chargement de votre site. 'Nuff a dit! En fixant une date d'expiration éloignée sur des éléments de sites qui ne changent pas très souvent, nous pouvons empêcher le navigateur de demander des ressources non modifiées à chaque demande..
Si vous utilisez votre site via Google PageSpeed ou le programme YSlow de Yahoo et que vous recevez le message sur la définition d'en-têtes d'expiration très éloignés, procédez comme suit:
ExpiresActive sur ExpiresActive sur ExpiresByType image / gif "accès plus 1 mois" ExpiresByType image / png "accès plus 1 mois" ExpiresByType image / jpg "accès plus 1 mois" ExpiresByType image / jpeg "accès plus 1 mois" ExpiresByType vidéo / ogg "accès plus 1 mois d'accès "ExpiresByType audio / ogg" plus 1 mois d'accès "ExpiresByType vidéo / mp4" plus 1 mois "ExpiresByType vidéo / webm" accès plus 1 mois "
Vous pouvez ajouter différents ExpiresByType
des directives pour tout contenu répertorié dans l'outil de performance que vous utilisez, ou pour tout autre élément sur lequel vous souhaitez contrôler la mise en cache. La première directive, ExpiresActif sur
, s'assure simplement que la génération d'en-têtes Expires est activée. Ces directives dépendent d’Apache ayant le mod_expires module chargé.
Un autre avertissement que nous pouvons avoir dans un vérificateur de performance concerne l'activation de la compression. Nous pouvons également corriger ce problème en mettant à jour notre fichier .htaccess:
FilterDeclare COMPRESS FilterProvider COMPRESS DEFLATE resp = contenu-Type $ text / html FilterProvider COMPRESS DEFLATE resp = contenu-Type $ text / css FilterProvider COMPRESS DEFLATE resp = contenu-Type $ text / javascript
Ce schéma de compression fonctionne sur les versions les plus récentes d’Apache (2.1+) en utilisant le mod_filter module. Il utilise le DÉGONFLER
algorithme de compression pour compresser le contenu en fonction de son type de contenu de réponse, dans ce cas, nous spécifions texte / html
, text / css
et texte / javascript
(qui seront probablement les types de fichiers marqués dans PageSpeed / Yslow de toute façon).
Dans l'exemple ci-dessus, nous commençons par déclarer le filtre que nous souhaitons utiliser, dans ce cas COMPRESSE
, en utilisant le FiltreDéclare
directif. Nous listons ensuite les types de contenu pour lesquels nous souhaitons utiliser ce filtre. le FiltrerChaîne
directive ordonne ensuite au serveur de construire une chaîne de filtrage basée sur la FilterProvider
directives que nous avons énumérées. le FiltreProtocole
directive nous permet de spécifier les options qui sont appliquées à la chaîne de filtres à chaque exécution, les options à utiliser sont: changer = oui
(le contenu peut être modifié par le filtre (dans ce cas, compressé)) et octets = non
(le filtre ne doit être appliqué que pour compléter les fichiers).
Sur les anciennes versions d’Apache, le mod_deflate module est utilisé pour configurer la compression DEFLATE. Nous avons moins de contrôle sur la façon dont le contenu est filtré dans ce cas, mais les directives sont plus simples:
SetOutputFilter DEFLATE AddOutputFilterByType DEFLATE text / html text / css text / javascript
Dans ce cas, nous venons de définir l'algorithme de compression en utilisant le SetOutputFilter
directive, puis spécifiez les types de contenu que nous aimerions compresser à l'aide de la touche AddOutputFilterByType
directif.
Généralement, votre serveur Web utilisera l’un de ces modules en fonction de la version d’Apache utilisée. Généralement, vous le saurez bien à l'avance, mais si vous créez un fichier .htaccess générique que vous pouvez utiliser sur plusieurs sites ou que vous pouvez partager avec d'autres personnes, vous ne savez donc pas quels modules peuvent être utilisés, vous souhaiterez peut-être utiliser les deux blocs de code ci-dessus, enveloppés dans
directives afin que le bon module soit utilisé et que le serveur n’émette pas une erreur 500 si nous essayons de configurer un module qui n’est pas inclus. Vous devez savoir qu'il est également relativement courant que les hôtes qui exécutent un grand nombre de sites à partir d'un seul boîtier désactivent la compression, car il y a un léger impact sur les performances du processeur pour la compression sur le serveur..
Nous avons examiné certaines des utilisations les plus courantes des fichiers .htaccess et examiné comment nous pouvons réaliser certaines tâches qui, en tant que constructeurs / responsables de sites Web, nous intéressent particulièrement. Comme pour tout tutoriel d'introduction de cette nature, les sujets que nous avons abordés sont présentés comme des introductions à un sujet particulier. Il existe de nombreuses autres options et configurations que celles que nous avons pu examiner. Je vous recommande donc vivement de lire davantage sur tout sujet présentant un intérêt particulier..