Guide du débutant sur .htaccess pour les concepteurs et les développeurs
Parmi les nombreux outils permettant de personnaliser votre serveur Web, le fichier de configuration .htaccess est un atout considérable. Vous pouvez réinitialiser rapidement les types de document, les moteurs d'analyse, les redirections d'URL, et de nombreuses autres fonctionnalités cruciales. Les webmasters qui ne sont pas très techniques peuvent ne pas entrer dans les détails de la gestion de votre propre fichier .htaccess. Mais le sujet lui-même est fascinant et mérite une enquête.
Pour cet article, je souhaite présenter certains des concepts les plus utiles pour les webmasters et les développeurs web. Quelqu'un qui est lancer leur propre site web sur un serveur Apache voudront certainement comprendre comment gérer leur fichier .htaccess. Il fournit tellement de personnalisation et cela peut fonctionner dans toutes les langues Web de PHP à Ruby.
Au bas de cet article, j'ai ajouté des applications Web externes à aider les nouveaux arrivants à générer dynamiquement leurs fichiers .htaccess.
Pourquoi utiliser un fichier .htaccess?
C’est une excellente question et peut-être devrions-nous commencer par répondre “qu'est-ce qu'un fichier .htaccess”? C'est un fichier de configuration très spécial utilisé par le serveur Web Apache. Un fichier .htaccess peut indiquer au serveur Web comment présenter diverses informations et comment gérer divers en-têtes de requêtes HTTP.
Vraiment c'est un moyen de décentralisation organiser les paramètres du serveur Web. Un serveur physique peut contenir 50 sites Web différents, chacun avec son propre fichier .htaccess. Il donne beaucoup de pouvoir aux webmasters, ce qui serait impossible autrement. Mais pourquoi devriez-vous en utiliser un?
La principale raison est la sécurité. Vous pouvez verrouiller certains répertoires ou les protéger avec un mot de passe. C'est idéal pour les projets privés ou les nouveaux systèmes de gestion de contenu pour lesquels vous souhaitez un peu plus de sécurité. Mais il existe également des tâches courantes telles que la redirection des messages d'erreur 404 vers une page Web donnée.. Cela ne prend qu'une seule ligne de code et cela peut avoir un impact considérable sur la réaction des visiteurs aux pages manquantes..
En vérité, je ne peux pas en dire plus pour convaincre les autres qu’un fichier .htaccess vaut la peine d’être compris. Une fois que vous le voyez en action, vous pouvez reconnaître toute la valeur qui provient de ce fichier de configuration minuscule. De plus, j'espère que la suite de cet article pourra présenter des sujets intéressants pour amener les webmasters à la lumière de la gestion d'une configuration .htaccess..
Autoriser / Refuser l'accès
Il est possible de reconnaître les visiteurs potentiels au spam et de leur refuser l'accès à votre site Web.. Cela peut être un peu extrême, cependant, si vous savez qu'une personne ou un groupe de personnes cible votre site Web, vous avez le choix entre plusieurs options. Vous pouvez choisir une référence de domaine pour refuser ou interdire les visiteurs par une adresse IP..
order allow, deny deny from 255.0.0.0 deny from 123.45.6. permettre à tous
Ces exemples de codes ont été copiés à partir de Htaccess Guide car ils constituent le modèle idéal pour commencer. Notez que le 4ème entier manque à la deuxième adresse IP. Ce bloc de code s’adressera à la première adresse IP (255.0.0.0) et à chaque adresse IP comprise entre 123.45.6.0-255., puis autoriser tout autre trafic. Les webmasters ne l'utilisent peut-être pas aussi souvent que d'autres techniques, mais il est utile de comprendre.
Empêcher l'inscription dans l'annuaire
Il y aura des fois où vous avez un répertoire ouvert qui est mis en place pour permettre la navigation par défaut. Cela signifie que les utilisateurs peuvent afficher tous les fichiers répertoriés dans une structure de répertoire interne, comme votre dossier images. Certains webmasters ne veulent pas autoriser la liste des répertoires et, heureusement, l'extrait de code est assez facile à mémoriser..
Options -Indexes
J'ai vu cette réponse présentée d'innombrables fois tout au long de Stack Overflow et il peut s'agir de l'une des règles les plus simples .htaccess à retenir..
Il est possible de réellement créer plusieurs fichiers .htaccess dans chacun de ces répertoires alors peut-être que l'un d'eux est protégé par un mot de passe mais les autres ne le sont pas. Et vous pouvez toujours garder le Options -Indexes afin que les visiteurs ne puissent pas naviguer sur votre site web / images / dossier.
Mot de passe de protection
La protection par mot de passe de vos annuaires est une procédure très courante pour: sécurisation des zones d'administration et autres dossiers essentiels à votre site Web. Parfois, vous voudrez seulement offrir l'accès à un petit groupe de personnes. D'autres fois, les mots de passe permettent d'empêcher les pirates d'accéder au panneau d'administration de votre site Web. Mais de toute façon, c’est une solution très puissante à de nombreux problèmes..
Il existe un guide pratique sur la protection par mot de passe qui décrit les extraits de code importants. Tu devras générer un fichier de mot de passe qui stocke les identifiants de nom d'utilisateur / mot de passe. C'est ainsi qu'Apache peut vérifier par rapport à ce que l'utilisateur entre pour voir s'il doit avoir un accès. Et remarquez comment vous devrez générer un exemple pour votre nom d'utilisateur et votre mot de passe..
Je recommanderais d'utiliser ce générateur htpassword afin de gagner un peu de temps. La syntaxe sera toujours parfaite et vous n'avez pas besoin de chiffrer le mot de passe vous-même.. Et l’autre option intéressante est de protéger par mot de passe une liste complète de répertoires. Nous pouvons voir cet exemple dans la galerie d'extraits de code CSS-Tricks.
AuthType Basic AuthName "Cette zone est protégée par un mot de passe" AuthUserFile /full/path/to/.htpasswd Requiert un utilisateur valide.
Sécurité pour WordPress
Pour tirer le meilleur parti de cette idée de protection par mot de passe, présentons un exemple concret. Cet extrait de code plus compliqué sera forcer l'authentification de l'utilisateur pour quiconque accédant au fichier WordPress wp-login.php. Vous trouverez le code source original sur Ask Apache, qui contient de nombreux autres extraits de protection WordPress..
Ordre Refuser, Autoriser Refuser de tous Satisfaire à tout AuthName "Protected By AskApache" AuthUserFile /web/askapache.com/.htpasswda1 AuthType Basic Requérir utilisateur valide
Et si vous souhaitez suivre ces règles .htaccess, il pourrait également être utile de protéger par mot de passe la zone d'administration. Typiquement le wp-login.php Le fichier va recevoir le plus grand nombre de visites de personnes essayant d’utiliser la force brutale dans leur système. Donc, même les exemples de codes ci-dessus seraient plus qu'assez de sécurité supplémentaire pour votre site WordPress.
Règles de réécriture d'URL HTTP
La réécriture des URL est probablement l’une des utilisations les plus courantes des fichiers .htaccess. Les installations par défaut de WordPress peuvent réellement générer un fichier .htaccess directement à partir du panneau d'administration. Cela vous permet de créer de jolies URL sans structure .php? P = 1.
Je veux regarder cet exemple de réécriture sur comment mettre à jour les traits de soulignement en tirets puisqu'il contient beaucoup d'éléments les plus importants.
Options + FollowSymLinks RewriteEngine On RewriteBase / RewriteRule! \. (Html | php) $ - [S = 4] RewriteRule ^ ([^ _] *) _ ([^ _] *) _ ([^ _] *) _ ( [^ _] *) _ (. *) $ $ 1- $ 2- $ 3- $ 4- $ 5 [E = uscor: Oui] RewriteRule ^ ([^ _] *) _ ([^ _] *) _ ([^ _ ] *) _ (. *) $ $ 1- $ 2- $ 3- $ 4 [E = uscor: Oui] RewriteRule ^ ([^ _] *) _ ([^ _] *) _ (. *) $ 1- 1- $ 2- $ 3 [E = uscor: Oui] RewriteRule ^ ([^ _] *) _ (. *) $ $ 1- 2 [E = uscor: Oui] RewriteCond% ENV: uscor ^ Oui $ RewriteRule (. *) Http: //d.com/$1 [R = 301, L]
Réécrire Moteur et RewriteBase peut toujours être réglé sur ces valeurs exactes. Mais il faut que le RewriteEngine soit activé pour que tout le reste fonctionne. Il existe de nombreux guides en ligne expliquant comment activer mod_rewrite et votre fournisseur d'hébergement peut également vous aider..
Notez que la syntaxe suit un modèle de RewriteRules au sommet. Ces règles sont utilisées pour établir une correspondance avec les requêtes envoyées sous forme de requête HTTP. Ceux-ci sont répondus par un RewriteRule qui dans ce cas redirige tout vers le domaine d.com. Les crochets finaux comme [R = 301, L] sont appelés des drapeaux de réécriture qui sont importants, mais qui sont plutôt un sujet avancé.
La syntaxe mod_rewrite est certainement un peu déroutante mais ne soyez pas intimidé! Les extraits peuvent sembler beaucoup plus faciles dans d'autres exemples.
Pour commencer, je dois recommander cette application Web mod_rewrite qui vous aide à générer des exemples de code à l'aide d'URL réelles. C'est un outil brillant, car vous pouvez rechercher différents éléments dans la syntaxe pour voir ce qu'ils font réellement dans les règles de réécriture. Voici un autre excellent tutoriel avec un exemple plus simple à étudier:
RewriteRule ^ dir / ([0-9] +) /? $ /Index.php?id=$1 [L]
N'essayez pas de vous surcharger en même temps. Il m'a fallu bien plus de 3 ou 4 mois pour vraiment comprendre comment réécrire les URL avec [0-9a-zA-Z] + et des modèles similaires. Continuez à vous entraîner et avec le temps, je vous promets que vous obtiendrez ces informations comme du savoir commun.
Extraits de code pour les webmasters
J'aime les extraits faciles à utiliser et je souhaite constituer cette petite collection de codes .htaccess pertinents pour les webmasters. Chacune de ces idées s'intègre parfaitement dans votre propre fichier .htaccess avec d'autres blocs de code. La plupart de ces extraits sont parfaits pour résoudre rapidement des problèmes ou des solutions dans votre environnement de serveur Web. Imaginez la configuration Apache parfaite pour les nouveaux webmasters qui commencent tout juste en ligne.
Définition de DirectoryIndex
La commande pour DirectoryIndex est couramment utilisée sur une seule ligne. Vous pouvez indiquer à Apache quels documents doivent initialement être traités comme les “principale” document. Par défaut ce sera éléments cibles tels que index.html, index.php, index.asp et d'autres fichiers d'index. Mais en utilisant cet extrait de code que j'ai copié ci-dessous, vous pouvez créer ce document racine comme bon vous semble..
DirectoryIndex index.html index.cgi index.php
L'ordre des documents doit commencer par le plus important et se déplacer dans les rangs au moins important. Donc, si nous n’avons pas de fichier HTML ou CGI, la solution de secours ira à index.php. Et vous pouvez même nommer ces fichiers home.php ou une autrefichier.php et c'est toute la syntaxe valide.
Forcer les sous-domaines WWW ou non-WWW
Google peut travailler avec les deux versions de votre domaine de site Web si vous ne spécifiez pas www.domaine.com ou juste domain.com. D'après mon expérience, il est préférable de choisissez-en un et définissez-le comme seul choix via .htaccess. Google n'indexera pas les différentes URL, certaines pointant vers le sous-domaine WWW, d'autres non..
# Forcer le sous-domaine WWW RewriteEngine sur RewriteCond% HTTP_HOST ^ domain.com [NC] RewriteRule ^ (. *) $ Http://www.domain.com/$1 [L, R = 301] # Aucun sous-domaine RewriteEngine sur RewriteCond% HTTP_HOST! ^ Domain.com $ [NC] RewriteRule ^ (. *) $ Http://domain.com/$1 [L, R = 301]
Cet extrait de code provient d'une archive CSS-Tricks et constitue une solution très pratique. Vous devez mettre à jour le domaine pour qu'il corresponde à tout ce dont vous avez besoin pour votre propre site web. Sinon, il y aura des problèmes et vous remarquerez tout de suite! Mais je suis tout à fait en faveur de l’obligation de forcer l’une de ces deux options. C’est au sommet de ma liste de tâches après le lancement d’un nouveau site Web..
Forcer le téléchargement de fichiers multimédias
Un autre extrait assez important permet de forcer certains types de média à télécharger au lieu d'être affiché dans le navigateur. Je peux immédiatement penser aux documents PDF et aux fichiers audio MP3 qui peuvent être présentés dans un format téléchargeable, mais comment assurez-vous qu'ils sont téléchargeables? J'ai trouvé un article similaire publié sur Htaccess Guide qui décrit cet extrait de code.
AddType application / octet-stream .zip .mp3 .mp4
N'hésitez pas à inclure encore plus de types de fichiers à la fin de cette ligne. Tous les formats de média utilisant le type MIME octet-stream seront téléchargeables. Forcer cela via .htaccess est un moyen très direct d’empêcher les utilisateurs de visualiser ces fichiers dans le navigateur..
Documents d'erreur personnalisés
Un dernier élément que je souhaite ajouter est un modèle complet de documents d'erreur personnalisés. Habituellement, ces codes numériques ne sont visibles que sur le serveur. Mais il y a beaucoup de ces documents d'erreur que vous devriez connaître. Quelques exemples pourraient être Erreurs 403/404 et le 301 redirection.
Ce modèle de code d'erreur commence à 100 et monte en 500 erreurs. Veuillez noter que vous n'avez évidemment pas besoin de tous ces éléments. Seules les erreurs les plus courantes seraient nécessaires, et éventuellement quelques extraits obscurs si vous en ressentez le besoin..
Si vous ne reconnaissez pas un code, il suffit de le consulter sur Wikipedia pour mieux le comprendre..
ErrorDocument 100 / 100_CONTINUE ErrorDocument 101 / 101_SWITCHING_PROTOCOLS ErrorDocument 102 / 102_PROCESSING ErrorDocument 200 / 200_OK ErrorDocument 201 / 201_CREATED ErrorDocument 202 / 202_ACCEPTED ErrorDocument 203 / 203_NON_AUTHORITATIVE ErrorDocument 204 / 204_NO_CONTENT ErrorDocument 205 / 205_RESET_CONTENT ErrorDocument 206 / 206_PARTIAL_CONTENT ErrorDocument 207 / 207_MULTI_STATUS ErrorDocument 300 / 300_MULTIPLE_CHOICES ErrorDocument 301 / 301_MOVED_PERMANENTLY ErrorDocument 302 / 302_MOVED_TEMPORARILY ErrorDocument 303 / 303_SEE_OTHER ErrorDocument 304 / 304_NOT_MODIFIED ErrorDocument 305 / 305_USE_PROXY ErrorDocument 307 / 307_TEMPORARY_REDIRECT ErrorDocument 400 / 400_BAD_REQUEST ErrorDocument 401 / 401_UNAUTHORIZED ErrorDocument 402 / 402_PAYMENT_REQUIRED ErrorDocument 403 / 403_FORBIDDEN ErrorDocument 404 / 404_NOT_FOUND ErrorDocument 405 / 405_METHOD_NOT_ALLOWED ErrorDocument 406 / 406_NOT_ACCEPTABLE ErrorDocument 407 / 407_PROXY_AUTHENTICATION_REQUIRED ErrorDocument 408 / 408_REQUEST_TIME_OUT ErrorDocument 409 / 409_CONFLICT ErrorDocument 410 / 410_GONE ErrorDocument 411 / 411_LENGTH_REQUIRED ErrorDocument 412 / 412_PRECONDITION_FAILED ErrorDocument 413 / 413_REQUEST_ENTITY_TOO_LARGE ErrorDocument 414 / 414_REQUEST_URI_TOO_LARGE ErrorDocument 415 / 415_UNSUPPORTED_MEDIA_TYPE ErrorDocument 416 / 416_RANGE_NOT_SATISFIABLE ErrorDocument 417 / 417_EXPECTATION_FAILED ErrorDocument 422 / 422_UNPROCESSABLE_ENTITY ErrorDocument 423 / 423_LOCKED ErrorDocument 424 / 424_FAILED_DEPENDENCY ErrorDocument 426 / 426_UPGRADE_REQUIRED ErrorDocument 500 / 500_INTERNAL_SERVER_ERROR ErrorDocument 501 / 501_NOT_IMPLEMENTED ErrorDocument 502 / 502_BAD_GATEWAY ErrorDocument 503 / 503_SERVICE_UNAVAILABLE ErrorDocument 504 / 504_GATEWAY_TIME_OUT ErrorDocument 505 / 505_VERSION_NOT_SUPPORTED ErrorDocument 506 / 506_VARIANT_ALSO_VARIES ErrorDocument 507 / 507_INSUFFICIENT_STORAGE ErrorDocument 510 / 510_NOT_EXTENDED
Applications Web en ligne .htaccess
- Htaccess Builder
- .générateur de redirection htaccess
- .htaccessEditor - Crée un fichier .htaccess
- Mod Rewrite Generator par GenerateIt.net
Autres ressources utiles
- .htaccess dans le wiki Httpd
- Documentation Apache htaccess officielle
- Ask Apache Blog - Archives Htaccess
- Guide ultime pour htaccess et mod_rewrite
- Tout ce que vous avez toujours voulu savoir sur les règles Mod_Rewrite sans oser le demander
Dernières pensées
Il existe une multitude de ressources en ligne traitant des fichiers .htaccess. Mes articles et applications Web liés sont un excellent endroit pour commencer. Mais continue à pratiquer de nouvelles idées et n’aie pas peur tester des extraits de code. Aussi longtemps que vous avez un fichier de sauvegarde alors vous pouvez tester tout ce que vous aimez et c'est une expérience d'apprentissage amusante.
Si vous avez d'autres idées ou suggestions sur la gestion de .htaccess, veuillez nous en faire part dans la zone de discussion ci-dessous..