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

Modul mod_rewrite Teil 4

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

In der Regel haben solche Benutzer Zugriff auf "root" oder Serveradministrator.

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 muss in "Abschnitt 2: Konfiguration des Hauptservers" in der Datei httpd.conf eingegeben werden, nicht in .htaccess!

Alle von mod_rewrite durchgeführten Manipulationen werden in diese Datei geschrieben. Der Name der Protokolldatei kann beliebig sein. Sie können einen absoluten oder relativen Dateipfad (relativ zu ServerRoot) angeben.

Wenn Sie unterschiedliche Protokolldateien für verschiedene virtuelle Hosts aufbewahren möchten, müssen Sie Änderungen an "Abschnitt 3: Virtuelle Server" vornehmen, 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. Die erste Ebene reicht normalerweise aus. Höhere Ebenen werden zum Debuggen verwendet.

Eine weitere Richtlinie, die für Tarnungszwecke sehr praktisch ist, ist die sogenannte Umschreibkarte . Dies sind Dateien, die Schlüssel / Wert-Paare enthalten, normalerweise in einem Textdateiformat: 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 sind, wie Sie sehen können, Hostnamen oder IP-Adressen. In diesem einfachen Beispiel ist der Wert immer gleich - "Spider". Natürlich werden die Werte in der realen Datei unterschiedlich sein. Diese Anweisung kann in den zweiten ("Konfiguration des Hauptservers") oder den dritten ("Virtuelle Server") Abschnitt der httpd.conf-Datei geschrieben werden: RewriteMap botBase txt:/www/yourdomain/spiderspy.txt

Die "Rewrite Card" 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 zu einer Systemüberprüfung: ob die Anfrage von einer Suchmaschine gestellt wurde. Zu diesem Zweck wird die Suche in der Datei spiderspy.txt durchgeführt. Wenn der Schlüssel gefunden wird, wird der "Spider" -Wert 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 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 zur Seite "index.html" weitergeleitet.

Da die ".htm" -Seiten nur von Spidern gelesen werden, können sie für die Suchmaschinen entsprechend optimiert werden. Sie können auch eine dbm-Datei anstelle einer einfachen 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 obige Beispiel bietet einfache Cloaking-Funktionalität. Alle regulären Besucher werden immer auf die Seite "index.html" weitergeleitet und keine Protokolldateien werden außerhalb von mod_rewrite-Protokollen aufbewahrt.

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

Ziel ist es, den Besuchern das "Foto des Tages" zu zeigen. Der 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 die Dateien mit den entsprechenden Namen herunterladen und vergessen Sie die tägliche Aktualisierung des Links. Zeitvariablen können auch für andere Periodizitäten verwendet werden.

Dies war das letzte Beispiel in einer Reihe von Veröffentlichungen über das wunderbare Modul mod_rewrite. Natürlich war es unmöglich, alle Nuancen, Direktiven, Variablen usw. zu berühren. In dieser Veröffentlichung war der Zweck anders - eine allgemeine Idee und ein Verständnis für die Grundlagen zu geben und sozusagen "up to date" zu bringen