Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs
ASP German Homepage Homepage
 

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

URL Rewriting am IIS

Geschrieben von: Carsten Wawer
Kategorie: Server

Für den Apache Webserver gibt es schon seit geraumer Zeit (fast seit Ewigkeiten) ein Modul namens mod_rewrite, das URLs beliebig "Umschreiben" kann. Dies reicht von einfachen Rewrites (vorgaukeln einer statischen Site) bis hin zu komplexen Rewrites die sich regulärer Ausdrücke bedienen. Heute werden wir ein Tool für IIS kennenlernen, das uns genau diese Funktionalität als ISAPI Filter bietet.

Beginnen wir mit einem praktischen Beispiel für URL Rewriting - aus einer Produktdetail-URL mit angehängtem QueryString

http://www.meinserver.de/news/detail.asp?id=28

könnte ein für Suchmaschinen unproblematisches

http://www.meinserver.de/news/detail/28.html

werden. Der Job von mod_rewrite (und seinen IIS Geschwistern) ist es, den URL rückumzuwandeln bevor der Webserver mit der tatsächlichen Bearbeitung beginnt.

URL-Rewrite für den IIS

Es gibt nicht nur für Apache solche Tools, sondern auch für den Internet Information Server gibt es Komponenten um URL-Rewriting zu nutzen. In Form von ISAPI-Filtern konvertieren diese die URLs auf Basis von Regeln und Regular Expressions.

Als Beispiel-Komponente habe ich mich für die Komponente ISAPI_Rewrite entschieden, die den nicht zu unterschätzenden Vorteil hat, in einer leicht eingeschränkten Version kostenlos verfügbar zu sein - dies erleichtert das erste Kennenlernen ungemein.

Installation

Auf der Produktwebsite von ISAPI_Rewrite laden wir uns zuallererst die "LITE-Version" der Komponente herunter. Ob wir die .exe oder oder die .msi-Datei nutzen hängt nur davon ab, ob wir den Windows-Installer 1.1 auf dem Zielserver verfügbar haben. Falls dem so ist, reicht die msi-Datei aus.

Die Installation verläuft recht unspektakulär. Wichtig ist nur zu beachten, daß das Tool den IIS-Admin-Dienst (und alle verknüpften Dienste wie WWW, FTP und SMTP) für die Dauer der Installation abschaltet.

Nach der Installation öffnen wir den Internetdienstmanager und finden innerhalb der ISAPI-Filter eine neue Eintragung: "ISAPI_Rewrite". Die Installation des Paketes wurde vollständig abgeschlossen, nun können wir an die Konfiguration des Filters gehen

Konfiguration

Im Installationsverzeichnis (z.B.: c:\Programme\Helios\ISAPI_REWRITE\) findet sich die entscheidende Datei zur Konfiguration, die Datei httpd.ini.

[ISAPI_Rewrite]

# Defend your computer from some worm attacks
RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O]

Die oben gezeigte Regel macht die (NT-Administratoren sicherlich bekannten) Zugriffe auf global.asa, default.ida und root.exe unschädlich. Dies trifft aber noch nicht ganz das Ziel unserer Bemühungen, weshalb wir uns mit dieser Zeile nicht länger beschäftigen und uns einer eigenen Regel zuwenden, aber zuerst sehen wir uns an, wie diese definiert sind.

Eine einfache Regel wäre die folgende

RewriteRule /news/detail/(.*).html /news/detail.asp\?id=$1

Diese Regel definiert anhand von Regular Expressions einen Ausdruck, der konvertiert werden soll. Ohne zu tief in die Regular Expressions steigen zu wollen, kann ich sagen, daß der Punkt (.) ein Sonderzeichen ist, das ein beliebiges Zeichen darstellt. Die Kombination mit dem Stern (*) heißt, daß das vorherige Zeichen (in diesem Fall beliebig) auch noch beliebig oft vorkommen darf. Ein klassischer Platzhalter also.

Auf der rechten Seite finden wir die URL, auf die verwiesen wird. Wichtig sind hierbei zwei Dinge zu beachten:

  • detail.asp\?id=
  • id=$1

Der Backslash vor dem Fragezeichen ist nötig um das (Zeichen) Fragezeichen vom Sonderzeichen Fragezeichen zu unterscheiden. Der Ausdruck $1 bezieht sich auf den ersten Platzhalter in den Klammern. Es dürfen bis zu neun Platzhalter genutzt werden.

Nun wollen wir uns aber eine etwas komplexere Regel ansehen

RewriteRule /sessionid/(.*)/id/(.*)/action/(.*)/(.*)/(.*).html /$4/$5\.asp\?sessionid=$1&id=$2&action=$3

Was macht dieses "Ungetüm"? Hier habe ich eine allgemeingültige Regel definiert, die mir die Arbeit in einem größeren Projekt erleichtert. Nehmen wir an, die URLs wurden bisher in folgendem Format genutzt:

http://www.meinserver.de/presse/artikel.asp?sessionid=436dg35dsgf&action=read&id=2634

und im gleichen Projekt existieren aber auch URLs wie:

http://www.meinserver.de/termine/termin.asp?sessionid=436dg35dsgf&action=buchung&id=363

Trotzdem kann ich beide mit meiner oben beschriebenen Regel abbilden. Die URLs würden nun

http://www.meinserver.de/sessiondid/436dg35dsgf /id/2634/action/read/presse/artikel.html

oder eben

http://www.meinserver.de/sessiondid/436dg35dsgf /id/363/action/buchung/termine/termin.html

lauten. Die einzelnen Platzhalter können folgendermaßen zugeordnet werden:

RewriteRule /sessionid/(.*)/id/(.*)/action/(.*)/(.*)/(.*).html /$4/$5\.asp\?sessionid=$1&id=$2&action=$3
  1. $1 ist die sessionid
  2. $2 ist die id
  3. $3 ist die action
  4. $4 ist der Pfad
  5. $5 ist der Filename ohne die .asp-Endung

Schlußbemerkung

Dies war ein erster kleiner Einblick in die Arbeit mit ISAPI_Rewrite. Neben der Indizierung von dynamischen Webprojekten durch Suchmaschinen bietet die Nutzung einer solchen Komponente aber auch weitreichende andere Möglichkeiten. Dies geht von einer Client-Browser-basierten Weiterleitung in verschiedene Verzeichnisse bis zu den nicht zu unterschätzenden Sicherheitsaspekten bei der Nutzung eines solchen Filters.

Als Anmerkung sei noch gesagt, daß die frei nutzbare Version von ISAPI_Rewrite die Beschränkung hat, nur eine globale Konfigurationsdatei zu unterstützen. In der Vollversion kann man für jede Website eine eigene Konfiguration anlegen.

Links zu anderen Sites

ISAPI_Rewrite

Wenn Sie jetzt Fragen haben...

Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten.

Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.

 

Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.