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

Module mod_rewrite partie 1

Vous avez probablement rencontré le terme "mod_rewrite" sur le réseau. Pour nos lecteurs qui ne sont pas complètement familiarisés avec ce module de serveur Web Apache, ainsi que pour ceux qui l'entendent pour la première fois, je vais essayer de vous en dire plus sur ce module dans cette publication.

Le module mod_rewrite est un module logiciel de serveur Web Apache (notez qu'il ne fonctionnera pas sous d'autres serveurs Web!). Sa fonction principale est de manipuler les actions d'URL. Le module est très polyvalent, je vais donc essayer de montrer ici de nombreux exemples réels.

Mod_rewrite est un excellent module qui fournit un "mécanisme basé sur des règles pour modifier dynamiquement les URL demandées". C’est vraiment un outil puissant, et par conséquent, ses connaissances sont essentielles pour devenir un véritable maître ou un programmeur Web. Peu importe que vous l'utilisiez dans votre travail, il est très important que vous sachiez ce qu'il peut faire et que vous puissiez en parler à votre supérieur quand vous souhaitez faire quelque chose d'étrange avec un serveur Web.

Cependant, vous devez être très prudent et même méticuleux lorsque vous travaillez avec ce module! Certaines des erreurs que vous pouvez commettre peuvent entraîner une boucle logique, entraînant une charge continue de 100% du processeur central (CPU).

Afin de ne pas sembler long en raisonnement, je vais donner quelques exemples très simples.

Avant que nous puissions travailler, vous devrez vérifier si le module est installé sur votre serveur Web ou non.

Il y a plusieurs façons de tester cela:

  1. Demandez à votre administrateur système s'il (ou elle) est au courant de la disponibilité de ce module sur le serveur Web. Ils devraient vraiment savoir, mais comme le montre la pratique - les administrateurs système ne sont pas très bien informés ...
    Ne forcez pas les autres: si vous utilisez votre serveur Web avec des centaines d'autres domaines, vos actions peuvent réveiller certains chiens endormis, car l'utilisation de mod_rewrite entraînera toujours une charge accrue sur le processeur central.
  2. Vérifiez votre fichier de configuration Apache (httpd.conf) si vous y avez accès. L'un des chemins standard possibles peut être:
    /etc/httpd/httpd.conf
    Cependant, votre chemin peut évidemment différer de cela.
  3. Testez votre serveur avec les exemples ci-dessous. Si le serveur fonctionne sans erreur, mod_rewrite est réellement installé sur votre système. Sinon, vous recevrez le message suivant lorsque vous demanderez une page Web à votre serveur: «Erreur interne du serveur»

En outre, vous verrez l'entrée suivante dans le fichier error.log:
"Commande 'RewriteEngine' invalide, peut-être mal orthographiée ou définie par la configuration du serveur".

Maintenant, approfondissons et voyons le premier exemple pratique.

Supposons que vous utilisiez mod_rewrite uniquement pour votre propre site, c’est-à-dire non pas comme une installation multiserveur générique.

Pour notre exemple, nous devrons utiliser le fichier .htaccess .

fichier .htaccess

Pour que cette méthode fonctionne, vous devez télécharger un fichier appelé “.htaccess” (veuillez noter le point situé au début du nom du fichier!) Dans le dossier du serveur avec lequel vous allez travailler. Cela peut être fait via telnet ou ftp. (Attention: .htaccess doit être chargé en "mode ASCII", c'est-à-dire pas en mode binaire!)

Si vous avez déjà un fichier «.htaccess», par exemple avec les entrées suivantes: Options Includes +ExecCGI AddType text/x-server-parsed-html .html

ajoutez simplement notre exemple de code ci-dessous à celui qui existe déjà (Important: modifiez votre fichier .htaccess dans un éditeur ASCII tel que Notepad).

Les deux premières entrées lanceront le module lui-même: RewriteEngine on Options +FollowSymlinks

Astuce: l'entrée «RewriteEngine off» annulera toutes les commandes suivantes. C'est une fonctionnalité très utile: au lieu de devoir commenter toutes les lignes suivantes, il vous suffit de désactiver la fonction.

Si votre administrateur système vous interdit d'utiliser «Options + FollowSymlinks», vous ne pourrez pas restreindre l'utilisation de mod_rewrite pour des répertoires individuels, mais les modifications affecteront l'ensemble du serveur.

La prochaine entrée requise est: RewriteBase /

“/” Est l'URL racine (primaire). Si vous avez une autre URL, vous pouvez l'indiquer dans cette directive, mais “/” est généralement équivalent à l'adresse “http: //domain.ru”.

Et maintenant, messieurs, passons à des articles plus intéressants!

Supposons que vous souhaitiez protéger votre fichier .htaccess contre les accès non autorisés. Sur certains serveurs, vous pouvez facilement lire ce fichier en entrant simplement l’URL suivante dans le champ adresse de votre navigateur: http://www.domain.com/.htaccess est une grave omission en matière de sécurité, car le contenu de votre .htaccess peut afficher des informations importantes sur les paramètres et paramètres de votre site à une personne qui sait comment appliquer ces connaissances contre vous.

Pour bloquer cet accès, écrivez ce qui suit: RewriteRule ^.htaccess$ - [F]

Cette règle se traduit par:

Si quelqu'un tente d'accéder au fichier .htaccess, le système doit générer le code d'erreur "Réponse HTTP de 403" ou "Interdit 403 - vous n'êtes pas autorisé à accéder à /.htaccess sur ce serveur".

La construction de ^ .htaccess $ dans cette expression régulière signifie:

^ - ligne de départ d'ancrage
$ - ancre de fin de ligne
. - dans les expressions régulières, le point «.» indique un méta-symbole et doit être protégé par une barre oblique inversée (barre oblique inversée) si vous souhaitez toujours utiliser le point réel.

Le nom du fichier doit être situé exactement entre l'ancre initiale et finale. Cela garantira que seul ce nom de fichier spécifique et aucun autre ne générera un code d'erreur.

[F] est un drapeau spécial "d'interdiction" (interdit).

Dans cet exemple, le fichier ".htaccess" se compose désormais des lignes suivantes: RewriteEngine on Options +FollowSymlinks RewriteBase / RewriteRule ^.htaccess$ - [F]

Si nous ajoutons notre code (dans les exemples) au fichier «.htaccess» existant précédemment, nous obtenons la construction suivante: Options Includes +ExecCGI AddType text/x-server-parsed-html .html RewriteEngine on
Options +FollowSymlinks RewriteBase / RewriteRule ^.htaccess$ - [F]
Options Includes +ExecCGI AddType text/x-server-parsed-html .html RewriteEngine on
Options +FollowSymlinks RewriteBase / RewriteRule ^.htaccess$ - [F]

Cette introduction ne couvre que les bases nécessaires pour utiliser le module mod_rewrite. Dans la deuxième partie de cette série d’articles didacticiels, je vais essayer d’expliquer l’utilisation de diverses conditions dans la configuration du module.