Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
Starten Sie den IIS-Manager, und klicken Sie dann auf "Standardwebsite".
Klicken Sie im Bereich "Aktionen " auf "Bindungen", und fügen Sie eine neue HTTP-Bindung für Port 8088 hinzu.
Abbildung 1: Hinzufügen einer neuen BindungÖffnen Sie mit dem Editor
%SystemDrive%\windows\system32\drivers\etc\hostsdie 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_comBeachten 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.
Speichern Sie die Hostdatei.
Überprüfen Sie, ob die Hostnamen ordnungsgemäß eingerichtet wurden, indem Sie einen Webbrowser öffnen und zu den Websites
http://www_mysite_com/iisstart.htmwechseln und zuhttp://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:
Starten Sie den IIS-Manager.
Wählen Sie auf der linken Seite im Bereich "Verbindungen " die Option "Standardwebsite" aus.
Klicken Sie auf der rechten Seite in der Featureansicht auf "URL neu schreiben".
Abbildung 2: Klicken Sie auf "URL neu schreiben"
Klicken Sie auf der rechten Seite im Bereich "Aktionen " auf "Regeln importieren".
Kopieren Sie die oben aufgeführten Beispielmod_rewrite-Regeln und fügen Sie sie in das Textfeld Rewrite rules ein.
Abbildung 3: Zu importierende Regeln
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.
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.
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.
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".
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.htmhttp://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.htmhttp://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.