Module Mod_rewrite, partie 1

Vous avez peut - être rencontré dans le terme «mod_rewrite» réseau. Pour nos lecteurs qui ne sont pas familiers avec ce module, le serveur Web Apache, ainsi que pour ceux qui font la première fois que j'ai entendu à ce sujet - que nous présentons dans cette publication (en plusieurs parties) plus sur ce module.

Le module mod_rewrite est un module logiciel du serveur Web Apache (notez qu'il ne fonctionnera pas sous d'autres serveurs web!). Sa fonction principale - l'action manipulation URL. Le module est très polyvalent et polyvalent, donc je vais essayer de montrer qu'il existe de nombreux exemples de la vie réelle.

Mod_rewrite est une unité merveilleuse, qui fournit un "mécanisme fondé sur des règles pour modifier dynamiquement l'URL de la demande." Ceci est un outil vraiment puissant, et par conséquent, sa connaissance est crucial si vous voulez devenir un vrai maître web ou un programmeur web. Pas tellement en principe, si vous l'utilisez dans leur travail, car il est important que vous sachiez ce qu'il peut faire, et vous pouvez dire à ce sujet à votre patron quand un désir de faire quelque chose d'étrange sur le serveur Web.

Cependant, nous devons être très prudents et méticuleux lorsque vous travaillez avec ce module! Certaines erreurs que vous pouvez éviter, peut conduire à une boucle logique, provoquant une fin jamais une charge CPU à 100% (CPU).

Pour éviter cela, voici quelques exemples très simples.

Avant de pouvoir se rendre au travail, vous aurez besoin de vérifier si le module sur votre serveur Web est installé ou non.

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

  1. Demandez à votre administrateur système - s'il sait (ou elle) à propos de la présence de ce module sur un serveur Web. Ils ont vraiment besoin de savoir, mais comme la pratique montre - il y a aussi certains pas très impatient de sysadmin talentueux ...
    Ne pas, cependant: si vous utilisez votre serveur web avec des centaines d'autres domaines, vos actions peuvent réveiller certains chiens endormis, comme l'utilisation de mod_rewrite comportera toujours une certaine charge accrue de l'UC.
  2. Vérifiez votre fichier de configuration d'Apache (httpd.conf), si vous avez accès. Un des moyens standards possibles peuvent être:
    /etc/httpd/httpd.conf
    Cependant, votre kilométrage peut évidemment varier.
  3. Vérifiez les performances de votre serveur avec les exemples suivants. Si le serveur est en cours d'exécution sans erreur - mod_rewrite est bien installé sur votre système. Sinon, vous recevrez le message suivant lors de l'appel des pages Web sur votre serveur: "Internal Server Error"

En outre, vous verrez l'entrée suivante dans le «error.log» fichier:
«Commande non valide 'RewriteEngine', peut-être mal orthographiés ou définis par un module non inclus dans la configuration du serveur».

Maintenant, nous allons creuser dans notre premier exemple pratique.

Supposons que vous allez utiliser mod_rewrite seulement pour votre propre site, donc pas comme la configuration du serveur croisée généralisée.

Pour notre exemple, nécessitent l'utilisation d' un fichier .htaccess.

fichier .htaccess

Pour que cette méthode fonctionne, vous devez télécharger un fichier appelé «.htaccess» (s'il vous plaît noter le point au début du nom de fichier!) Dans le dossier du serveur à partir de laquelle vous allez travailler. Cela peut se faire via telnet ou ftp. (Attention: .htaccess doit être chargé dans «mode ASCII", c.-à-pas en mode binaire!)

Si vous avez déjà un «.htaccess» fichier, 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 pour l'existant (important: éditez votre fichier .htaccess dans ASCII éditeur comme Notepad).

Les deux premières entrées commenceront le module: RewriteEngine on Options +FollowSymlinks

Astuce: Record «RewriteEngine off» annulera toutes les commandes suivantes. Ceci est - une fonctionnalité très utile: au lieu d'avoir à commenter toutes les lignes suivantes - tout ce que vous avez à faire est d'installer le «off».

Si votre administrateur système ne permet pas l'utilisation de «options + FollowSymlinks», vous ne pouvez pas limiter l'utilisation de mod_rewrite à vos répertoires, mais devront plutôt d'agir sur l'ensemble du serveur.

La prochaine entrée requise - est: RewriteBase /

"/" Est la racine (principale) URL. Si vous avez d'autres l'URL, vous pouvez le spécifier dans cette directive, mais le "/" - généralement équivalente à l'adresse «http: //domen.ru".

Et maintenant, messieurs, nous allons passer à des dossiers plus intéressants!

Supposons que vous voulez protéger contre l'accès non autorisé à votre fichier .htaccess. Sur certains serveurs, vous pouvez facilement lire ce fichier en entrant simplement le format d'URL suivante dans le champ d'adresse de votre navigateur: http://www.domain.com/.htaccess - une omission grave de protection, comme le contenu de votre .htaccess peut révéler des informations importantes sur les paramètres et Configurez votre site web une personne qui sait comment utiliser cette connaissance contre vous.

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

Il est généralement traduit par:

Si quelqu'un tente d'accéder au fichier .htaccess, le système devrait générer la «réponse HTTP 403" ou une erreur "403 Interdit - Vous n'êtes pas autorisé à accéder à /.htaccess sur ce serveur» code.

Conception ^ .htaccess $ dans une expression régulière signifie:

^ - Le début de la ligne d'ancrage
$ - Fin de l' ancre de ligne
. - "." Dans les expressions régulières, le point dénote un caractère méta et doit être protégé par une barre oblique inverse (backslash), si vous voulez toujours un point réel.

Le nom du fichier doit être situé exactement entre le début et la fin d'ancrage. Cela garantira que seul ce nom de fichier spécifique et aucun autre va générer un code d'erreur.

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

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

Si nous ajoutons notre code (dans cet exemple) pour «de» un fichier préexistant, nous obtenons la structure 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 traite que les bases nécessaires pour travailler avec le module mod_rewrite. Dans la deuxième partie de ce tutoriel, nous allons expliquer l'utilisation de conditions lors de la configuration du module.