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

Modul mod_rewrite Teil 1

Sie haben wahrscheinlich den Begriff "mod_rewrite" im Netzwerk gefunden. Für unsere Leser, die sich mit diesem Modul des Apache-Webservers nicht auskennen, sowie für diejenigen, die sie zum ersten Mal hören, werde ich versuchen, in dieser Publikation (in mehreren Teilen) mehr über dieses Modul zu erzählen.

Das mod_rewrite-Modul ist das Apache-Webserver-Programmmodul (beachten Sie, dass es nicht unter anderen Webservern ausgeführt wird!). Seine Hauptfunktion ist die Manipulation von Aktionen mit der URL. Das Modul ist sehr vielseitig und vielseitig, daher werde ich versuchen, hier viele reale Beispiele zu zeigen.

Mod_rewrite ist ein großartiges Modul, das einen "regelbasierten Mechanismus zum dynamischen Ändern der angeforderten URLs" bietet. Dies ist ein wirklich mächtiges Werkzeug und daher ist sein Wissen grundlegend wichtig, wenn Sie ein echter Webmaster oder Webprogrammierer werden wollen. Nicht so sehr im Prinzip, ob Sie es in Ihrer Arbeit verwenden werden, wie wichtig es ist, dass Sie wissen, was es kann, und Sie können es Ihrem Chef erzählen, wenn es den Wunsch hat, etwas Seltsames mit dem Webserver zu tun.

Allerdings müssen Sie bei der Arbeit mit diesem Modul sehr vorsichtig und sorgfältig arbeiten! Einige Fehler, die Sie tolerieren können, können zu einer logischen Schleife führen, die eine ununterbrochene Auslastung der CPU (CPU) von 100% verursacht.

Um nicht lange zu argumentieren, werde ich einige sehr einfache Beispiele geben.

Bevor wir anfangen können, müssen Sie überprüfen, ob das Modul auf Ihrem Webserver installiert ist oder nicht.

Es gibt mehrere Möglichkeiten, dies zu überprüfen:

  1. Fragen Sie Ihren Systemadministrator - kennt er (oder sie) das Vorhandensein dieses Moduls auf dem Webserver? Sie müssen es wirklich wissen, aber wie die Praxis zeigt - es gibt auch nicht sehr kenntnisreiche Systemadministratoren ...
    Belästige andere nicht: Wenn du deinen Webserver mit Hunderten anderer Domains verwendest, können deine Aktionen einige schlafende Hunde aufwecken, da die Verwendung von mod_rewrite immer eine erhöhte CPU-Belastung mit sich bringt.
  2. Überprüfen Sie Ihre Apache-Konfigurationsdatei (httpd.conf), wenn Sie Zugriff darauf haben. Ein möglicher Standardpfad kann sein:
    /etc/httpd/httpd.conf
    Ihr Weg kann jedoch davon abweichen.
  3. Überprüfen Sie den Betrieb Ihres Servers anhand der folgenden Beispiele. Wenn der Server ohne Fehler läuft - mod_rewrite ist wirklich auf Ihrem System installiert. Wenn nicht, erhalten Sie die folgende Meldung, wenn Sie eine Webseite von Ihrem Server anfordern: "Interner Serverfehler"

Außerdem sehen Sie diesen Eintrag in der Datei "error.log":
"Ungültiger Befehl 'RewriteEngine', möglicherweise falsch geschrieben oder von einem Modul definiert, das nicht in der Serverkonfiguration enthalten ist."

Lasst uns nun tiefer gehen und das erste praktische Beispiel sehen.

Angenommen, Sie verwenden mod_rewrite nur für Ihre eigene Site, dh nicht als verallgemeinerte Cross-Server-Installation.

In unserem Beispiel müssen Sie die .htaccess- Datei verwenden.

.htaccess Datei

Um diese Methode zu verwenden, müssen Sie eine Datei mit dem Namen ".htaccess" herunterladen (achten Sie bitte auf den Punkt am Anfang des Dateinamens!) In den Server-Ordner, mit dem Sie arbeiten werden. Dies kann über Telnet oder FTP geschehen. (Achtung: .htaccess muss im "ASCII-Modus" geladen sein, dh nicht im Binärmodus!)

Wenn Sie bereits eine ".htaccess" -Datei haben, zum Beispiel mit folgenden Einträgen: Options Includes +ExecCGI AddType text/x-server-parsed-html .html

Fügen Sie dann unseren Beispielcode zu dem vorhandenen von unten hinzu (Wichtig: Bearbeiten Sie Ihre .htaccess-Datei in einem ASCII-Editor wie Notepad).

Die ersten beiden Einträge starten das Modul selbst: RewriteEngine on Options +FollowSymlinks

Tipp: Der Eintrag "RewriteEngine aus" überschreibt alle nachfolgenden Befehle. Dies ist eine sehr nützliche Funktion: Anstatt alle folgenden Zeilen kommentieren zu müssen, müssen Sie nur "aus" setzen.

Wenn Ihr Systemadministrator Ihnen verbietet, "Optionen + FolgenSymlinks" zu verwenden, können Sie die Verwendung von mod_rewrite nicht für einzelne Verzeichnisse einschränken, sondern die Änderungen gelten für den gesamten Server.

Der folgende erforderliche Eintrag ist: RewriteBase /

"/" Ist die primäre Root-URL. Wenn Sie eine andere URL haben, können Sie dies in dieser Direktive angeben, jedoch entspricht "/" normalerweise der Adresse "http: //domain.ru".

Und nun, meine Herren, lassen Sie uns zu interessanteren Aufzeichnungen übergehen!

Angenommen, Sie möchten Ihre .htaccess-Datei vor unbefugtem Zugriff schützen. Auf einigen Servern können Sie diese Datei einfach lesen, indem Sie die URL des folgenden Formats in das Adressfeld Ihres Browsers eingeben: http://www.domain.com/.htaccess - eine schwerwiegende Unterlassung des Schutzes, da der Inhalt Ihrer .htaccess-Datei wichtige Informationen zu den Einstellungen und Einstellungen Ihrer Website für eine Person, die weiß, wie Sie dieses Wissen gegen Sie anwenden können.

Um diesen Zugriff zu blockieren, schreibe folgendes: RewriteRule ^.htaccess$ - [F]

Diese Regel lautet wie folgt:

Wenn jemand versucht, auf die .htaccess-Datei zuzugreifen, sollte das System eine HTTP-Antwort von 403 oder 403 generieren. Verboten - Sie sind nicht berechtigt, auf diesem Server auf /.htaccess zuzugreifen.

Das Konstrukt .htaccess $ in diesem regulären Ausdruck bedeutet:

^ - Anfangslinie Anker
$ Ist der Ende der Zeile Anker
. - In regulären Ausdrücken der Punkt "." Bezeichnet ein Metasymbol und muss durch einen umgekehrten Schrägstrich geschützt werden, wenn Sie den tatsächlichen Punkt noch verwenden möchten.

Der Dateiname muss genau zwischen den Start- und Endankern liegen. Dadurch wird sichergestellt, dass nur dieser bestimmte Dateiname und kein anderer einen Fehlercode generiert.

[F] - eine spezielle "abweisende" Flagge (verboten).

In diesem Beispiel besteht die Datei ".htaccess" nun aus den folgenden Zeilen: RewriteEngine on Options +FollowSymlinks RewriteBase / RewriteRule ^.htaccess$ - [F]

Wenn wir unseren Code (in den Beispielen) der vorhandenen ".htaccess" -Datei hinzufügen, erhalten wir die folgende Konstruktion: 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]

Diese Einführung behandelt nur die Grundlagen, die für die Arbeit mit dem mod_rewrite-Modul erforderlich sind. Im zweiten Teil dieser Serie von Trainingsartikeln werde ich versuchen, die Verwendung verschiedener Bedingungen in der Konfiguration des Moduls zu erklären.