So führen Sie eine interne Umleitung mit mod_rewrite in apache durch

So führen Sie eine interne Umleitung mit mod_rewrite in apache durch

In diesem Artikel und im nächsten werden wir erklären, wie Sie Mod_rewrite verwenden, um bestimmte HTTP -Anforderungen auf andere Seiten auf einer Website oder einer externen URL zuzuordnen.

Mit anderen Worten, mit diesem bekannten Apache-Modul können Sie eine URL zu einem anderen umleiten, was wir anhand praktischer Beispiele veranschaulichen werden.

Vorgeschlagene Lesen: 5 Tipps, um die Leistung Ihres Apache -Webservers zu steigern

NOTIZ: Die folgenden Beispiele gehen davon aus, dass Sie zumindest etwas vertraut sind Perl kompatible reguläre Ausdrücke (Pcre). Da dieses Thema nicht im Rahmen dieses Artikels heraus ist, siehe Perl 5 Version 24.0 Dokumente für weitere Details zu PCRE.

Stellen Sie vor dem Fahren sicher, dass das Umschreibmodul geladen ist. Obwohl dies das Standardverhalten in ist Centos und ähnliche Verteilungen in Debian und Ableitungen müssen Sie wie folgt manuell laden:

# a2enmod neu schreiben 

Konfigurieren von Apache für das Modul mod_rewrite

Lassen Sie uns zur Einfachheit die Standardstelle in a verwenden Centos 7 Kasten (IP 192.168.0.100) zu erklären, wie man benutzt mod_rewrite (Dokument Root: /var/www/html, Konfigurationsdatei: /etc/httpd/conf/httpd.Conf).

Damit Apache dieses Modul verwenden kann, fügen Sie der Konfigurationsdatei die folgende Zeile hinzu:

Umschreiber auf 

Es ist wichtig zu beachten, dass diese Konfiguration von virtuellen Hosts im selben Box nicht vererbt wird.

So müssen Sie hinzufügen RewriteEngine für jeden virtuellen Host, bei dem Sie Regeln neu schreiben möchten.

Interne Umleitung: Zuordnen einer URL zu einem anderen im selben virtuellen Host abzubilden

Eine interne Umleitung ist das einfachste Beispiel für mod_rewrite. Wenn Sie alle Anfragen für umleiten möchten Standard.ASPX Zu Index.html, Fügen Sie die folgende Zeile (auch als Rewrite -Regel bezeichnet) unter hinzu RewriteEngine An:

Umriteriere "^/default \.Aspx $ ""/Index.html " 

Und vergessen Sie nicht, Apache neu zu starten, damit die Änderungen wirksam werden können.

Dies kann nützlich sein, wenn Ihre Website ursprünglich verwendet wurde ASP und später in die Ebene geändert HTML5. Suchmaschinen haben die .ASPX Datei indiziert, aber diese Datei gibt es nicht mehr.

In diesem Fall müssen Sie einen Weg finden, um die Anfrage umzuleiten, damit Ihre potenziellen Besucher nicht auf eine Fehlerseite stoßen. Lassen Sie uns eine einfache HTML -Datei namens erstellen Index.html innen /var/www/html mit dem folgenden Inhalt:

    Neue Seite   

Standard.ASPX war hier, aber jetzt ist es Index.html

Der Pflege Und Dollar Anzeichen veranlassen, dass der reguläre Ausdruck zu jeder String übereinstimmt, die mit dem mit /Standard und enden mit .ASPX, bzw.

Vorgeschlagene Lesen: Installieren Sie mod_pageSpeed, um die Apache -Leistung bis zu 10x zu beschleunigen

Starten Sie nun Ihren Browser und weisen Sie ihn auf 192.168.0.100/Standard.ASPX. Wenn die Dinge wie erwartet laufen, sollte Apache dienen Index.html stattdessen.
Der Endbenutzer wird jedoch immer noch sehen Standard.ASPX In der Adressleiste, die dazu führt, dass die Änderung völlig transparent ist:

URL auf andere Seite auf Domain zuordnen

Wenn Sie möchten, dass die URL in der Adressleiste zeigt, dass der Server tatsächlich serviert wird Index.html anstelle einer Seite mit dem Namen Standard.ASPX, hinzufügen [R, L] bis zum Ende der Reschrieben der Reschreiber -Regel wie folgt:

Umriteriere "^/default \.Aspx $ ""/Index.html "[r, l] 

Hier [R, L] sind zwei optionale Flags, die darauf hinweisen, dass ein vollständiger HTTP (R) und dass keine weiteren Regeln verarbeitet werden sollten:

URL auf die tatsächliche Indexseite zuordnen

Beachten Sie, wie die Adressleiste jetzt angezeigt wird Index.html, wie erwartet statt von Standard.ASPX Wie früher.

Zusammenfassung

In diesem Artikel haben wir erklärt, wie Sie Mod_rewrite verwenden, um eine interne Umleitung durchzuführen. Seien Sie gespannt auf den nächsten Beitrag, in dem wir lernen, wie Sie zu einer Ressource umgeleitet werden, die auf einen anderen Server verschoben wurde, und wie benutzerdefinierte Inhalte basierend auf dem Browser des Benutzers angezeigt werden können. Bis dahin beziehen Sie sich auf den Apache 2.4 Dokumente für eine vollständige Liste der verfügbaren Umschreibeflags.

Verwenden Sie wie immer das folgende Kommentarformular, wenn Sie Fragen oder Feedback zu diesem Artikel haben. Wir freuen uns von Ihnen zu hören!