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 connaissent pas parfaitement ce module du serveur web Apache, ainsi que pour ceux qui en entendent parler pour la première fois, j'essaierai d'en dire plus sur ce module dans cette publication (en plusieurs parties).

Le module mod_rewrite est le module de programme du serveur web Apache (notez qu'il ne fonctionnera pas sous d'autres serveurs web!). Sa fonction principale est la manipulation des actions avec l'URL. Le module est très polyvalent et polyvalent, donc je vais essayer de montrer ici beaucoup d'exemples réels.

Mod_rewrite est un excellent module qui fournit un "mécanisme basé sur des règles pour changer dynamiquement les URL demandées". C'est un outil très puissant, et par conséquent, sa connaissance est fondamentalement importante si vous voulez devenir un véritable webmestre ou un programmeur web. Pas tellement en principe, si vous l'utiliserez dans votre travail, combien il est important que vous sachiez ce qu'il peut faire, et vous pouvez en parler à votre patron quand il y a un désir de faire quelque chose d'étrange avec le serveur web.

Cependant, vous devez être très prudent et même méticuleux lorsque vous travaillez avec ce module! Certaines erreurs que vous pouvez tolérer peuvent conduire à une boucle logique, provoquant une charge ininterrompue de 100% du CPU (CPU).

Pour ne pas paraître long à raisonner, je vais donner quelques exemples très simples.

Avant de pouvoir commencer, vous devrez vérifier si le module est installé sur votre serveur Web ou non.

Il y a plusieurs façons de vérifier cela:

  1. Demandez à votre administrateur système: connaît-il (ou elle) la présence de ce module sur le serveur Web? Ils ont vraiment besoin de savoir, mais comme le montre la pratique - il n'y a pas non plus d'administrateurs système très compétents ...
    N'enfoncez pas les autres: si vous utilisez votre serveur Web avec des centaines d'autres domaines, vos actions peuvent réveiller des chiens endormis, car l'utilisation de mod_rewrite impliquera toujours une augmentation de la charge du processeur.
  2. Vérifiez votre fichier de configuration Apache (httpd.conf) si vous y avez accès. Un chemin standard possible peut être:
    /etc/httpd/httpd.conf
    Cependant, votre chemin peut évidemment différer de cela.
  3. Vérifiez le fonctionnement de votre serveur avec les exemples ci-dessous. Si le serveur fonctionne sans erreurs - mod_rewrite est vraiment installé sur votre système. Sinon, le message suivant s'affichera lorsque vous demanderez une page Web à votre serveur: "Erreur interne du serveur"

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

Maintenant, creusons plus profondément et voyons le premier exemple pratique.

Supposons que vous utilisiez mod_rewrite uniquement pour votre propre site, c'est-à-dire, pas comme une installation inter-serveur généralisée.

Pour notre exemple, vous devrez utiliser le fichier .htaccess .

fichier .htaccess

Pour utiliser cette méthode, vous devez télécharger un fichier appelé ".htaccess" (veuillez faire attention au point au début du nom de fichier!) Dans le dossier du serveur avec lequel vous travaillerez. Cela peut être fait via telnet ou ftp. (Attention: .htaccess doit être chargé en "mode ASCII", ce qui n'est 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

puis ajoutez simplement notre exemple de code à celui existant en bas (Important: éditez votre fichier .htaccess dans un éditeur ASCII tel que le Bloc-notes).

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

Astuce: l'entrée "RewriteEngine off" remplacera toutes les commandes suivantes. C'est une fonctionnalité très utile: au lieu d'avoir à commenter toutes les lignes suivantes, tout ce que vous avez à faire est de désactiver le "off".

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

L'entrée obligatoire suivante est: RewriteBase /

"/" Est l'URL racine (principale). Si vous avez une autre URL, vous pouvez le spécifier dans cette directive, cependant "/" est généralement équivalent à l'adresse "http: //domain.ru".

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

Supposons que vous souhaitiez protéger votre fichier .htaccess contre tout accès non autorisé. Sur certains serveurs, vous pouvez facilement lire ce fichier simplement en entrant l'URL du format suivant dans le champ d'adresse de votre navigateur: http://www.domain.com/.htaccess - une omission grave de protection, car le contenu de votre .htaccess peut montrer 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 comme suit:

Si quelqu'un essaie d'accéder au fichier .htaccess, le système devrait générer une réponse HTTP de 403 ou 403 Interdit - Vous n'avez pas l'autorisation d'accéder à /.htaccess sur ce serveur.

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

^ - ancre de ligne de début
$ Est l'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 inverse si vous voulez toujours utiliser le point réel.

Le nom du fichier doit être exactement entre les ancres de début et de fin. Cela garantira que seul ce nom de fichier particulier et aucun autre générera un code d'erreur.

[F] - un drapeau spécial "interdisant" (interdit).

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

Si nous ajoutons notre code (dans les exemples) au fichier ".htaccess" existant, 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 travailler avec le module mod_rewrite. Dans la deuxième partie de cette série d'articles de formation, je vais essayer d'expliquer l'utilisation de diverses conditions dans la configuration du module.