Freigeben über


Importieren von Apache-mod_rewrite-Regeln

von Ruslan Yakushev

Einführung

Das URL Rewrite Module in IIS 7 und höher bietet ein Importfeature, das den Prozess der Konvertierung von Apache mod_rewrite Regeln in IIS-URL-Neuschreibregeln erheblich vereinfacht. In dieser exemplarischen Vorgehensweise verwenden Sie das Feature "Importregeln", das im URL Rewrite Module bereitgestellt wird, um mehrere mod_rewrite Regeln in eine IIS-Konfigurationsdatei zu importieren. Wenn Sie das URL Rewrite Module noch nicht heruntergeladen haben, können Sie dies unter https://www.iis.net/downloads/microsoft/url-rewrite.

Einrichten einer Schritt-für-Schritt-Anleitung

Um zu sehen, wie Sie mod_rewrite Regeln konvertieren und überprüfen können, ob die konvertierten Regeln ordnungsgemäß funktionieren, implementieren Sie das allgemeine Szenario, kanonische Hostnamen für eine Website zu erzwingen. In diesem Beispiel erzwingen Sie die Verwendung anstelle www.mysite.com von mysite.com, sodass Sie, wenn eine Anforderung gestellt wird, die einen anderen Hostnamen verwendet als www.mysite.com, sie an einen kanonischen Hostnamen umleiten können.

  1. Starten Sie den IIS-Manager, und klicken Sie dann auf "Standardwebsite".

  2. Klicken Sie im Bereich "Aktionen " auf "Bindungen", und fügen Sie eine neue HTTP-Bindung für Port 8088 hinzu.

    Screenshot des Dialogfelds Abbildung 1: Hinzufügen einer neuen Bindung

  3. Öffnen Sie mit dem Editor %SystemDrive%\windows\system32\drivers\etc\hosts die Datei und fügen Sie am Ende der Datei die folgenden zwei Zeilen hinzu:

    127.0.0.1 www_mysite_com
    127.0.0.1 mysite_com
    

    Beachten Sie, dass Sie "_" anstelle von "." für Domänentrennzeichen verwenden. Dadurch wird verhindert, dass der Webbrowser versucht, den Domänennamen mithilfe eines DNS-Servers (Domain Name System) aufzulösen.

  4. Speichern Sie die Hostdatei.

  5. Überprüfen Sie, ob die Hostnamen ordnungsgemäß eingerichtet wurden, indem Sie einen Webbrowser öffnen und zu den Websites http://www_mysite_com/iisstart.htm wechseln und zu http://mysite_com/iisstart.htm.

Konvertiere mod_rewrite-Regeln

Die Apache-mod_rewrite Regeln, die zum Erzwingen kanonischer Hostnamen verwendet werden sollen, sind:

#For sites running on a port other than 80:
RewriteCond %{HTTP_HOST}   !^www_mysite_com [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^/(.*)         http://www_mysite_com:%{SERVER_PORT}/$1 [L,R]

#And for a site running on port 80
RewriteCond %{HTTP_HOST}   !^www_mysite_com [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteRule ^/(.*)         http://www_mysite_com/$1 [L,R]

Um diese Regeln in das genaue Format zur IIS-URL-Umschreibung zu konvertieren:

  1. Starten Sie den IIS-Manager.

  2. Wählen Sie auf der linken Seite im Bereich "Verbindungen " die Option "Standardwebsite" aus.

  3. Klicken Sie auf der rechten Seite in der Featureansicht auf "URL neu schreiben".

    Screenshot des Standardmäßigen Homepagebereichs mit ausgewählter Option

    Abbildung 2: Klicken Sie auf "URL neu schreiben"

  4. Klicken Sie auf der rechten Seite im Bereich "Aktionen " auf "Regeln importieren".

  5. Kopieren Sie die oben aufgeführten Beispielmod_rewrite-Regeln und fügen Sie sie in das Textfeld Rewrite rules ein.

    Screenshot des Bereichs

    Abbildung 3: Zu importierende Regeln

  6. Auf der Registerkarte " Strukturansicht " des Felds " Konvertierte Regeln " wird das Ergebnis der Konvertierung sofort angezeigt. Sie können auch auf die Registerkarte "XML-Ansicht " klicken, um zu sehen, wie die Regeln in der datei Web.config gespeichert werden.

    Screenshot der Umschaltung zwischen Strukturansicht und XML-Ansicht im Bereich

    Abbildung 4: Konvertierte Regeln

    Wenn Sie zurück zur Strukturansicht wechseln und dort einen Knoten auswählen, wird die entsprechende mod_rewrite Regeldirektive im Textfeld " Regeln neu schreiben " hervorgehoben.

    Screenshot eines ausgewählten Knotens in der Strukturansicht der konvertierten Regeln.

    Abbildung 5: Baumansicht

    Beachten Sie, dass während der Regelkonvertierung den Regeln Standardnamen zugewiesen wurden. Wenn Sie die Standardnamen in etwas aussagekräftiger ändern möchten, wählen Sie in der Strukturansicht eine Regel aus, klicken Sie mit der rechten Maustaste darauf, und wählen Sie im Kontextmenü "Umbenennen" aus.

    Screenshot des Rechtsklicks auf eine konvertierte Regel, um die Regel umzubenennen.

    Abbildung 6: Umbenennen

    Ändern Sie den Namen der ersten Regel von ImportedRule1 in "Umleitung zu www_mysite_com:non-80". Ändern Sie den Namen der zweiten Regel von ImportedRule2 in "Umleitung zu www_mysite_com:80".

    Klicken Sie im Bereich "Aktionen" auf "Übernehmen", um die konvertierten Regeln in der Web.config Datei zu speichern, und klicken Sie dann auf "Zurück zu Regeln".

    Screenshot des Bereichs

    Abbildung 7: Zurück zu Regeln

Testen der konvertierten Regeln

Um zu testen, ob die aus mod_rewrite Format importierten Regeln ordnungsgemäß funktionieren, öffnen Sie einen Webbrowser, und wechseln Sie zu einer der folgenden URLs:

  • http://localhost/iisstart.htm
  • http://mysite_com/iisstart.htm

In beiden Fällen wird der Webbrowser zu http://www_mysite_com/iisstart.htm umgeleitet.

Wenn Sie eine der beiden URLs ausprobieren:

  • http://localhost:8088/iisstart.htm
  • http://mysite_com:8088/iisstart.htm

der Webbrowser wird umgeleitet zu http://www_mysite_com:8088/iisstart.htm.

Beachten Sie, dass die aus mod_rewrite importierten Regeln die Erzwingung kanonischer Hostnamen für eine Website aktiviert haben. Eine Bing-Suche zeigt weitere Beispiele für Apache mod_rewrite Regeln.

Haftungsausschluss

WICHTIG : Das URL Rewrite Module versucht, Apache-mod_rewrite-Regeln in funktionell gleichwertige IIS-URL-Neuschreibregeln zu konvertieren. Aufgrund von Architekturunterschieden zwischen Apache und IIS können jedoch nicht alle mod_rewrite Regeln konvertiert werden. Es wird dringend empfohlen, einen mod_rewrite Regelsatz zu untersuchen, bis Sie die Funktionalität verstehen, bevor Sie mit dem Konvertierungsprozess beginnen. Überprüfen und testen Sie nach der Konvertierung in IIS-URL-Umschreibungsregeln das Ergebnis, um sicherzustellen, dass der entsprechende IIS-Umschreibungsregelsatz dieselbe URL-Umschreibungslogik bereitstellt.

Beachten Sie, dass nur Regeln, die Apache mod_rewrite Syntax folgen, konvertiert werden können. Alle anderen Formate von Neuschreibregeln (z. B. ISAPI_Rewrite, Ionic ISAPI Rewrite, IISRewrite und andere) werden nicht erkannt oder falsch konvertiert.