Modul mod_rewrite, Teil 1

Sie haben in dem Begriff «mod_rewrite» Netzwerk aufgetreten. Für unsere Leser, die der Apache-Webserver, als auch für diejenigen, die nicht vertraut mit diesem Modul sind, die das erste Mal habe ich davon gehört - wir in dieser Publikation (in mehreren Teilen) mehr über dieses Modul präsentieren.

Modul mod_rewrite ist ein Software-Modul des Apache Web-Server (beachten Sie, dass es nicht unter anderen Web-Servern ausgeführt werden!). Seine primäre Funktion - Manipulation Aktion URL. Das Modul ist sehr vielseitig und vielseitig, so werde ich versuchen, es zu zeigen, sind viele Beispiele aus der Praxis.

Mod_rewrite ist ein wunderbares Gerät, das eine bietet "regelbasierten Mechanismus dynamisch die angeforderte URL-s zu ändern." Dies ist ein wirklich leistungsfähiges Werkzeug, und deshalb sein Wissen ist entscheidend, wenn Sie eine echte Web-Master oder ein Web-Programmierer werden wollen. Nicht so sehr im Prinzip, ob Sie es bei ihrer Arbeit verwenden, da es wichtig ist, dass Sie wissen, was er tun kann, und Sie können über diese zu Ihrem Chef sagen, wenn ein Wunsch, etwas seltsam an den Webserver zu tun.

Allerdings müssen wir sehr vorsichtig und sorgfältig sein, wenn sie mit diesem Modul zu arbeiten! Einige Fehler, die Sie vermeiden können, können zu einer logischen Schleife führen, was eine nie endende eine 100% CPU-Last (CPU).

Klar zu steuern, von diesem, hier sind einige sehr einfache Beispiele.

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

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

  1. Fragen Sie Ihren Systemadministrator - wenn er weiß (oder sie) über das Vorhandensein dieses Moduls auf einem Webserver. Sie müssen wirklich wissen, aber wie die Praxis zeigt - es gibt auch einige nicht sehr freuen uns auf talentierte Sysadmin ...
    Sie nicht, aber: wenn Sie Ihren Web-Server mit Hunderten von anderen Domänen verwenden, Ihre Aktionen können einige schlafenden Hunde aufwachen, da die Nutzung von mod_rewrite wird immer eine erhöhte CPU-Belastung mit sich bringen.
  2. Prüfen Sie die Apache-Konfigurationsdatei (httpd.conf), wenn Sie Zugriff darauf haben. Eine mögliche Standardmethoden können sein:
    /etc/httpd/httpd.conf
    Doch die Leistung kann natürlich variieren.
  3. Überprüfen Sie die Leistung Ihres Servers mit den folgenden Beispielen. Wenn der Server ohne Fehler läuft - mod_rewrite ist in der Tat auf dem System installiert. Wenn nicht, werden Sie die folgende Meldung erhalten, wenn alle Web-Seiten von Ihrem Server ruft: "Internal Server Error"

Außerdem werden Sie den folgenden Eintrag in der «error.log» Datei finden Sie unter:
«Invalid command 'RewriteEngine', vielleicht falsch geschrieben oder definiert durch ein Modul nicht in der Server-Konfiguration enthalten».

Nun wollen wir in unser erstes praktisches Beispiel graben.

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

Für unser Beispiel erfordern die Verwendung von .htaccess - Datei.

.htaccess-Datei

Für diese Methode funktioniert, müssen Sie eine Datei «.htaccess» (bitte beachten Sie den Punkt am Anfang des Dateinamens!) Im Server-Ordner namens zum Download von dem Sie arbeiten. Dies kann über Telnet oder FTP erfolgen. (Achtung: .htaccess muss in «ASCII-Modus", dh nicht im Binär-Modus geladen werden!)

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

fügen Sie einfach unseren Beispielcode unten an die vorhandene (wichtig: bearbeiten Sie Ihre .htaccess-Datei im ASCII-Editor wie Notepad).

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

Tipp: Nehmen Sie «RewriteEngine off» werden alle nachfolgenden Befehle abzubrechen. Dies ist - eine sehr nützliche Funktion: Statt auf alle nachfolgenden Zeilen zu äussern - alles, was Sie tun müssen, ist die Installation von «off».

Wenn Ihr Systemadministrator die Verwendung von «Optionen + FollowSymlinks» nicht zulassen, können Sie die Verwendung von mod_rewrite auf Ihre Verzeichnisse nicht beschränken, sondern stattdessen auf den gesamten Server zu handeln.

Der nächste erforderliche Eintrag - ist: RewriteBase /

"/" Ist die Wurzel (Haupt-) URL. Wenn Sie eine andere die URL haben, können Sie diese in dieser Richtlinie angeben, aber die "/" - in der Regel gleichbedeutend mit der Adresse "http: //domen.ru".

Und nun, meine Herren, lassen Sie uns auf, um weitere interessante Aufzeichnungen bewegen!

Angenommen, Sie haben vor unbefugtem Zugriff zu schützen, wollen in der .htaccess-Datei. Auf einigen Servern, können Sie einfach diese Datei lesen Sie einfach durch Eingabe der folgenden URL-Format in Ihrem Browser-Adressfeld: http://www.domain.com/.htaccess - ein schweres Versäumnis des Schutzes, wie der Inhalt Ihrer .htaccess wichtige Informationen über die Einstellungen zu offenbaren und Konfigurieren Sie Ihre Website eine Person, die weiß, wie man dieses Wissen gegen Sie zu verwenden.

Um diesen Zugang sperren, geben Sie den folgenden: RewriteRule ^.htaccess$ - [F]

Es wird normalerweise übersetzt mit:

Wenn jemand die Datei .htaccess zuzugreifen versucht, sollte das System den Code «HTTP-Antwort von 403" Fehler oder "403 Forbidden - Sie haben keine Berechtigung /.htaccess auf diesem Server zuzugreifen» erzeugen.

Entwurf ^ .htaccess $ in einem regulären Ausdruck bedeutet:

^ - Der Beginn der Ankerleine
$ - Ende der Linie Anker
. - "". In regulären Ausdrücken bezeichnet der Punkt ein Meta-Zeichen und muss durch einen umgekehrten Schrägstrich (Backslash) geschützt werden, wenn Sie noch einen tatsächlichen Punkt wollen.

Der Dateiname muss genau zwischen dem Start- und Ziel Anker liegen. Dadurch wird sichergestellt, dass nur diese bestimmten Dateinamen und kein anderer einen Fehlercode erzeugen.

[F] - Special "Verbot" Flagge (verboten).

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

Wenn wir unseren Code (in diesem Beispiel) zu einer bereits bestehenden Datei «.htaccess» hinzufügen, erhalten wir die folgende Struktur: 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 richtet sich nur die Grundlagen benötigt, um mit dem Modul mod_rewrite zu arbeiten. Im zweiten Teil dieses Tutorials werden wir die Anwendung von Bedingungen bei der Konfiguration des Moduls zu erklären.