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

Modul mod_rewrite ч.4

In dieser Veröffentlichung werden wir auf die Richtlinien eingehen, die in den vorherigen Teilen keine Zeit hatten. Diese Direktiven können nicht auf der Verzeichnisebene bestimmt werden. Dies bedeutet, dass Sie Zugriff auf die Konfigurationsdatei des Apache-Webservers (httpd.conf) haben müssen.

Normalerweise ist dieser Zugriff für Benutzer "root" oder Server-Administrator verfügbar.

Wenn Sie alle mit mod_rewrite ausgeführten Operationen protokollieren möchten, können Sie sie mit dem folgenden Eintrag aktivieren: RewriteLog /usr/local/apache/logs/mod_rewrite_log
RewriteLogLevel 1
RewriteLog /usr/local/apache/logs/mod_rewrite_log
RewriteLogLevel 1

Diese Zeile sollte in "Section 2: Main Server Configuration" in der Datei httpd.conf, nicht in der .htaccess-Datei eingetragen werden!

Alle Manipulationen von mod_rewrite werden in diese Datei geschrieben. Der Name der Protokolldatei kann alles sein. Sie können einen absoluten oder relativen (relativ zu ServerRoot) Pfad zur Datei angeben.

Wenn Sie unterschiedliche Protokolldateien für verschiedene virtuelle Hosts verwalten möchten, müssen Sie Änderungen in "Abschnitt 3: Virtuelle Server" eingeben, zum Beispiel: 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 kann im Bereich von 1 bis 8 definiert werden. In der Regel ist die erste Stufe ausreichend. Höhere Ebenen werden zum Debuggen verwendet.

Eine weitere Richtlinie, die sehr nützlich für Tarnungszwecke ist, ist die sogenannte Umschreibkarte . Dies sind Dateien, die Schlüssel / Wert-Paare enthalten, normalerweise im Format einer Textdatei: 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

Die Schlüssel, wie Sie sehen können, sind Hostnamen oder IP-Adressen. In diesem einfachen Beispiel ist der Wert immer gleich - "Spider". Natürlich sind die Werte in einer echten Datei unterschiedlich. Diese Direktive kann in den zweiten ("Main server configuration") oder dritten ("Virtual servers") Abschnitt der httpd.conf Datei geschrieben werden: RewriteMap botBase txt:/www/yourdomain/spiderspy.txt

Eine "Rewrite Map" wirkt sich auf den gesamten Server aus.

Außerdem wird Folgendes in die .htaccess-Datei geschrieben: RewriteCond ${botBase:%{REMOTE_HOST}} =spider [OR] RewriteCond ${botBase:%{REMOTE_ADDR}} =spider RewriteRule ^(.*).htm$ $1.htm [L] RewriteRule ^.*.htm$ index.html [L]

Diese Bedingungen führen eine Systemprüfung durch: ob die Abfrage von der Suchmaschine durchgeführt wird. Zu diesem Zweck wird die Datei spiderspy.txt gesucht. Wenn der Schlüssel gefunden wird, wird der Wert "Spinne" zurückgegeben, und die "Bedingung" wird wahr sein.

Dann wird die erste RewriteRule ausgeführt. Dies bedeutet, dass die angeforderte ".htm" Seite an die Suchmaschine übergeben wird. Die Variable $ 1 ist gleich dem Teil in den Klammern "^ (. *). Htm $", das heißt, der Dateiname bleibt gleich.

Wenn die URL von einem normalen Besucher aufgerufen wird, wird die zweite "Regel" angewendet: Der Benutzer wird auf die Seite "index.html" umgeleitet.

Da ".htm" -Seiten nur von "Spinnen" gelesen werden, können sie für Suchmaschinen entsprechend optimiert werden. Sie können die Datei auch im Format "dbm" anstelle der normalen Textdatei verwenden. Das binäre Datenformat ermöglicht es Ihnen, die Suche zu beschleunigen, was besonders wichtig ist, wenn Sie mit sehr großen Suchmaschinen arbeiten. Das oben angegebene Beispiel bietet eine einfache Cloaking-Funktionalität. Alle regulären Besucher werden immer auf die Seite "index.html" weitergeleitet und keine Protokolldateien werden außerhalb der Protokolle von mod_rewrite protokolliert.

Sie können mehrere Zeilen Code PHP (Perl usw.) in Ihren Anwendungen ersetzen, indem Sie nur eine oder zwei Zeilen von mod_rewrite verwenden. Das letzte Beispiel wird dies detaillierter veranschaulichen.

Ziel ist es, den Besuchern ein "Foto des Tages" zu zeigen. Ein Besucher, der auf den Link http://yoursite.com/pic.html klickt, sieht das beste Foto oder Bild des Tages und so jeden Tag. Wir werden mit Servervariablen arbeiten:

TIME_MON
TIME_DAY

RewriteRule ^pic.html$ pic-%{TIME_MON}-%{TIME_DAY}.html Sie eine Zeile in die .htaccess-Datei ein: RewriteRule ^pic.html$ pic-%{TIME_MON}-%{TIME_DAY}.html

Die angeforderte URL wird überschrieben, zum Beispiel:

Bild-08-28.html
Bild-08-29.html
Bild-08-30.html
usw.

Jetzt müssen Sie nur noch Dateien mit den richtigen Namen hochladen und die tägliche Aktualisierung des Links vergessen. Zeitvariablen können auch für andere Periodizitäten verwendet werden.

Dies war das letzte Beispiel in einer Reihe von Publikationen über das bemerkenswerte Modul mod_rewrite. Natürlich war es unmöglich, alle Nuancen, Anweisungen, Variablen usw. zu berühren. In dieser Publikation war das Ziel anders - eine allgemeine Idee und ein Verständnis für die Grundlagen zu geben und sozusagen "Dinge auf den Tisch zu bringen".