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 getroffen. Für unsere Leser, die mit diesem Apache-Webserver-Modul nicht vollständig vertraut sind, sowie für diejenigen, die zum ersten Mal davon erfahren, werde ich versuchen, Ihnen in dieser Veröffentlichung mehr über dieses Modul zu erzählen.

Das mod_rewrite-Modul ist ein Apache-Webserver-Softwaremodul (beachten Sie, dass es nicht unter anderen Webservern läuft!). Seine Hauptfunktion besteht darin, URL-Aktionen zu bearbeiten. Das Modul ist sehr vielseitig und vielseitig, daher werde ich hier einige Beispiele zeigen.

Mod_rewrite ist ein großartiges Modul, das einen "regelbasierten Mechanismus zum dynamischen Ändern der angeforderten URLs" bietet. Dies ist wirklich ein leistungsfähiges Werkzeug, und daher ist sein Wissen von entscheidender Bedeutung, wenn Sie ein echter Webmaster oder Webprogrammierer werden möchten. Nicht so sehr, ob Sie es in Ihrer Arbeit verwenden, wie wichtig ist es, dass Sie wissen, was er tun kann, und Sie können es Ihrem Chef mitteilen, wenn Sie mit einem Webserver etwas Seltsames machen wollen.

Sie müssen jedoch bei der Arbeit mit diesem Modul sehr vorsichtig und sogar akribisch sein! Einige der Fehler, die Sie begehen können, können zu einer logischen Schleife führen, die den Prozessor (CPU) dauerhaft zu 100% belastet.

Um nicht langwierig zu erscheinen, werde ich einige sehr einfache Beispiele geben.

Bevor wir uns an die Arbeit machen können, müssen Sie prüfen, ob das Modul auf Ihrem Webserver installiert ist oder nicht.

Es gibt mehrere Möglichkeiten, dies zu testen:

  1. Fragen Sie Ihren Systemadministrator, ob er (oder sie) über die Verfügbarkeit dieses Moduls auf dem Webserver informiert ist. Sie sollten es wirklich wissen, aber wie die Praxis zeigt, kommen nicht sehr versierte Systemadministratoren in Kontakt ...
    Belasten Sie andere nicht: Wenn Sie Ihren Webserver mit Hunderten von anderen Domänen verwenden, können Ihre Aktionen einige schlafende Hunde aufwecken, da die Verwendung von mod_rewrite immer eine gewisse Belastung des zentralen Prozessors mit sich bringt.
  2. Überprüfen Sie Ihre Apache-Konfigurationsdatei (httpd.conf), wenn Sie darauf Zugriff haben. Einer der möglichen Standardpfade kann sein:
    /etc/httpd/httpd.conf
    Ihr Weg kann jedoch offensichtlich davon abweichen.
  3. Testen Sie Ihren Server anhand der folgenden Beispiele. Wenn der Server fehlerfrei läuft, ist mod_rewrite tatsächlich 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 einen solchen Eintrag in der Datei error.log:
"Ungültiger Befehl 'RewriteEngine', möglicherweise falsch geschrieben oder in der Serverkonfiguration nicht konfiguriert".

Nun lasst uns tiefer graben und das erste praktische Beispiel sehen.

Angenommen, Sie verwenden mod_rewrite nur für Ihre eigene Site, d. H. Nicht als generische, serverübergreifende Installation.

Für unser Beispiel müssen wir die .htaccess- Datei verwenden.

.htaccess-Datei

Damit diese Methode funktioniert, müssen Sie eine Datei mit dem Namen „.htaccess“ hochladen (beachten Sie den Punkt am Anfang des Dateinamens!) In den Ordner des Servers, mit dem Sie arbeiten werden. Dies kann über Telnet oder FTP erfolgen. (Warnung: .htaccess muss im "ASCII-Modus" geladen sein, dh nicht im Binärmodus!)

Wenn Sie bereits über eine ".htaccess" -Datei verfügen, beispielsweise mit den folgenden Einträgen: Options Includes +ExecCGI AddType text/x-server-parsed-html .html

Fügen Sie einfach den unten stehenden Beispielcode zum vorhandenen Code 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 off" löscht alle nachfolgenden Befehle. Dies ist eine sehr nützliche Funktion: Statt alle nachfolgenden Zeilen kommentieren zu müssen, müssen Sie nur "off" setzen.

Wenn Ihr Systemadministrator Ihnen die Verwendung von "Optionen + FollowSymlinks" verbietet, können Sie die Verwendung von mod_rewrite nicht für einzelne Verzeichnisse einschränken, sondern die Änderungen wirken sich auf den gesamten Server aus.

Der nächste erforderliche Eintrag ist: RewriteBase /

“/” Ist die Stamm-URL (primäre). Wenn Sie eine andere URL haben, können Sie dies in dieser Anweisung angeben, aber "/" entspricht normalerweise der Adresse "http: //domain.ru".

Und nun, meine Herren, kommen wir zu interessanteren Beiträgen!

Angenommen, Sie möchten Ihre .htaccess-Datei vor unbefugtem Zugriff schützen. Auf einigen Servern können Sie diese Datei einfach lesen, indem Sie einfach die folgende URL in das Adressfeld Ihres Browsers eingeben: http://www.domain.com/.htaccess ist eine schwerwiegende Sicherheitslücke, da der Inhalt Ihres .htaccess wichtige Installationsinformationen und enthalten kann Einstellungen Ihrer Site für eine Person, die dieses Wissen gegen Sie anwenden kann.

Um diesen Zugriff zu blockieren, schreiben Sie Folgendes: RewriteRule ^.htaccess$ - [F]

Diese Regel wird übersetzt als:

Wenn jemand versucht, auf die .htaccess-Datei zuzugreifen, sollte das System den Fehlercode "HTTP-Antwort von 403" oder "403 nicht zulässig - keine Berechtigung zum Zugriff auf /.htaccess auf diesem Server" ausgeben.

Die Konstruktion von ^ .htaccess $ in diesem regulären Ausdruck bedeutet:

^ - Ankerstartlinie
$ - Ende des Leinenankers
. - In regulären Ausdrücken bezeichnet der Punkt „.“ ein Metasymbol und muss durch einen umgekehrten Schrägstrich (Backslash) geschützt werden, wenn Sie den tatsächlichen Punkt trotzdem verwenden möchten.

Der Dateiname muss genau zwischen dem Anfangs- und Endanker liegen. Dadurch wird sichergestellt, dass nur dieser bestimmte Dateiname und kein anderer einen Fehlercode generiert.

[F] ist eine spezielle "Verbotsflagge" (verboten).

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

Wenn wir unseren Code (in den Beispielen) zu der zuvor 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 zum Arbeiten mit dem Modul mod_rewrite erforderlich sind. Im zweiten Teil dieser Tutorial-Artikelserie werde ich versuchen, die Verwendung verschiedener Bedingungen in der Modulkonfiguration zu erklären.