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

Module mod_rewrite partie 4

Dans cette publication, nous aborderons les directives que nous n'avons pas réussi à couvrir dans les parties précédentes. Ces directives ne peuvent pas être définies au niveau du répertoire. Cela signifie que vous devez avoir accès au fichier de configuration du serveur Web Apache (httpd.conf).

Habituellement, les utilisateurs root ou l'administrateur du serveur ont cet accès.

Si vous souhaitez conserver des journaux de toutes les opérations effectuées à l'aide de mod_rewrite, vous pouvez l'activer à l'aide de l'entrée suivante: RewriteLog /usr/local/apache/logs/mod_rewrite_log
RewriteLogLevel 1
RewriteLog /usr/local/apache/logs/mod_rewrite_log
RewriteLogLevel 1

Cette ligne doit être entrée dans «Section 2: Configuration du serveur principal» dans le fichier httpd.conf, et non dans .htaccess!

Toutes les manipulations effectuées par mod_rewrite seront écrites dans ce fichier. Le nom du fichier journal peut être quelconque. Vous pouvez spécifier un chemin de fichier absolu ou relatif (relatif à ServerRoot).

Si vous souhaitez conserver différents fichiers journaux pour différents hôtes virtuels, vous devez saisir les modifications dans «Section 3: Serveurs virtuels», par exemple: ServerAdmin webmaster@yourdomain.com DocumentRoot /usr/www/htdocs/yourdomain ServerName yourdomain.com RewriteLog /usr/apache/logs/yourdomain_mod_rewrite_log
RewriteLogLevel 1
ServerAdmin webmaster@yourdomain.com DocumentRoot /usr/www/htdocs/yourdomain ServerName yourdomain.com RewriteLog /usr/apache/logs/yourdomain_mod_rewrite_log
RewriteLogLevel 1

RewriteLogLevel peut être défini dans une plage de 1 à 8. Habituellement, le premier niveau est suffisant. Des niveaux supérieurs sont utilisés pour le débogage.

Une autre directive très pratique pour le masquage est la carte dite de réécriture . Ce sont des fichiers contenant des paires clé / valeur, généralement au format de fichier texte: cde2c920.infoseek.com spider 205.226.201.32 spider cde2c923.infoseek.com spider 205.226.201.35 spider cde2c981.infoseek.com spider 205.226.201.129 spider cde2cb23.infoseek.com spider 205.226.203.35 spider

Les clés, comme vous pouvez le voir, sont des noms d'hôtes ou des adresses IP. Dans cet exemple simple, la valeur est toujours la même - «araignée». Naturellement, les valeurs du vrai fichier seront différentes. Cette directive peut être écrite dans la deuxième («Configuration du serveur principal») ou la troisième («Serveurs virtuels») du fichier httpd.conf: RewriteMap botBase txt:/www/yourdomain/spiderspy.txt

La «carte de réécriture» aura un effet sur l'ensemble du serveur.

En outre, ce qui suit est écrit dans le fichier .htaccess: RewriteCond ${botBase:%{REMOTE_HOST}} =spider [OR] RewriteCond ${botBase:%{REMOTE_ADDR}} =spider RewriteRule ^(.*).htm$ $1.htm [L] RewriteRule ^.*.htm$ index.html [L]

Ces conditions effectueront une vérification du système: si la demande a été faite par le moteur de recherche. Pour ce faire, recherchez le fichier spiderspy.txt. Si la clé est trouvée, la valeur "spider" sera retournée et la "condition" sera vraie.

Ensuite, la première RewriteRule est exécutée. Cela signifie que la page ".htm" demandée sera renvoyée au moteur de recherche. La variable $ 1 est égale à la partie entre parenthèses "^ (. *). Htm $", c'est-à-dire que le nom du fichier restera le même.

Si l'URL est appelée par un visiteur ordinaire, alors la deuxième «règle» s'applique: l'utilisateur sera redirigé vers la page «index.html».

Étant donné que les pages ".htm" ne seront lues que par des "araignées", elles peuvent être optimisées en conséquence pour les moteurs de recherche. Vous pouvez également utiliser le fichier dbm au lieu du fichier texte brut. Le format de données binaires vous permet d'accélérer la recherche, ce qui est particulièrement important si vous travaillez avec de très grandes listes de moteurs de recherche. L'exemple ci-dessus offre une fonctionnalité de masquage simple. Tous les visiteurs réguliers seront toujours redirigés vers la page "index.html" et aucun journal de fichier ne sera conservé en dehors des journaux mod_rewrite.

Vous pouvez remplacer plusieurs lignes de code php (perl, etc.) dans vos applications en utilisant seulement une ou deux lignes de mod_rewrite. Le dernier exemple l'illustrera plus en détail.

L'objectif est de montrer aux visiteurs la «photo du jour». Un visiteur qui clique sur le lien http://votresite.com/pic.html verra la meilleure photo ou image de la journée, et donc tous les jours. Nous travaillerons avec des variables de serveur:

TIME_MON
TIME_DAY

Mettez une seule ligne dans le fichier .htaccess: RewriteRule ^pic.html$ pic-%{TIME_MON}-%{TIME_DAY}.html

L'URL demandée sera réécrite, par exemple:

pic-08-28.html
pic-08-29.html
pic-08-30.html
et ainsi de suite.

Maintenant, tout ce que vous avez à faire est de télécharger une fois les fichiers avec les noms appropriés et d'oublier la mise à jour quotidienne du lien. Les variables de temps peuvent également être utilisées pour d'autres périodicités.

Ce fut le dernier exemple d'une série de publications sur le merveilleux module mod_rewrite. Naturellement, il était impossible de toucher à toutes les nuances, directives, variables, etc. dans cette publication, l'objectif était autre chose - donner une idée générale et une compréhension des bases, et ainsi dire «mettre les choses à jour».