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 qui ne figuraient pas 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).

En règle générale, ces utilisateurs ont accès «root» ou administrateur du serveur.

Si vous souhaitez conserver les journaux de toutes les opérations effectuées à l'aide de mod_rewrite, vous pouvez l'activer avec 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, pas 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 (par rapport à ServerRoot).

Si vous souhaitez conserver différents fichiers journaux pour différents hôtes virtuels, vous devez modifier la «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 allant de 1 à 8. Le premier niveau suffit généralement. Des niveaux plus élevés sont utilisés pour le débogage.

La « carte de réécriture» est une autre directive très pratique pour masquer. Ce sont des fichiers contenant des paires clé / valeur, généralement dans un 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

Comme vous pouvez le constater, les clés sont des noms d’hôte ou des adresses IP. Dans cet exemple simple, la valeur est toujours la même - "araignée". Naturellement, dans le fichier réel, les valeurs seront différentes. Cette directive peut être écrite dans la deuxième section («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 tout le serveur.

En outre, les éléments suivants sont écrits 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 produiront une vérification du système: si la demande a été faite par un moteur de recherche. À cette fin, la recherche est effectuée dans le fichier spiderspy.txt. Si la clé est trouvée, la valeur "spider" sera renvoyée et la "condition" sera vraie.

Ensuite, la première rewriteRule est exécutée. Cela signifie que la page ".htm" demandée sera transmise 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 habituel, la deuxième «règle» est appliquée: l'utilisateur sera redirigé vers la page «index.html».

Puisque 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 un fichier dbm au lieu d'un 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 fichier journal ne sera conservé en dehors des journaux mod_rewrite.

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

Le but est de montrer aux visiteurs la «photo du jour». Le visiteur qui clique sur le lien http://votresite.com/pic.html verra la meilleure photo ou photo du jour, et ainsi de suite. Nous allons travailler 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 écrasée, 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 les fichiers avec les noms correspondants une fois 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, le but était différent - donner une idée générale et une compréhension des bases, et pour ainsi dire «actualiser»