| Überblick
Wir möchten Ihnen heute einen ISAPI-Filter vorstellen, der es Ihnen ermöglicht, auf Ihrem IIS Subdomains zu nutzen, ohne diese einzeln konfigurieren zu müssen. Wenn Sie im IIS Subdomains einrichten möchten, müssen Sie normalerweise wenigstens den entsprechenden Host-Header zu Ihrer Web-Site hinzufügen. Bei einer großen Anzahl von Domains kann dies einen beträchtlichen Aufwand bedeuten. Obwohl sich der Vorgang automatisieren läßt, ist es dennoch nicht möglich, beliebige Subdomains anzusprechen, da die Host-Header keine Wildcards unterstützen.
Nachteilig wirkt sich dabei zudem aus, dass Sie über alle Domains die selben Verzeichnisse und Dokumente ansprechen. Möchten Sie jeder Subdomain ein eigenes Verzeichnis zuordnen, so muss dafür jeweils eine eigenständige Web-Site angelegt werden.
Mit Hilfe des in diesem Beitrag vorgestellten Filters ist es möglich, beliebige Subdomains ohne weitere Konfiguration auf Verzeichnisse der Web-Site abzubilden - es ist weder notwendig, die Host-Header zur Web-Site hinzuzufügen noch getrennte Sites anzulegen.
Was ist möglich?
Sie können mit Hilfe des Filters einzelnen Subdomains beliebige Verzeichnisse der Website zuordnen, so wird z.B. über den folgenden Eintrag in der Konfigurationsdatei
sub1.nogetec.de=nogetec.de/subdomain1
die Subdomain 'sub1.nogetec.de' auf das Verzeichnis 'subdomain1' der Domain 'nogetec.de' abgebildet.
Darüberhinaus ist es möglich, durch den Einsatz von Wildcards, beliebige Subdomains auf gleichnamige Verzeichnisse der Hauptdomain verweisen zu lassen:
*.nogetec.de=nogetec.de/*
Hierbei erfolgen z.B. folgende Ersetzungen:
subdomain1.nogetec.de=nogetec.de/subdomain1
subdomain2.nogetec.de=nogetec.de/subdomain2
subdomain3.nogetec.de=nogetec.de/subdomain3
Die beiden Möglichkeiten lassen sich natürlich auch kombinieren, auf diese Weise können Sie z.B. alle noch nicht vergebenen Subdomains auf ein spezielles Verzeichnis zeigen lassen, in dem sich die Anwender diese dann registrieren lassen können:
subdomain1.nogetec.de=nogetec.de/subdomain1
subdomain2.nogetec.de=nogetec.de/subdomain2
subdomain3.nogetec.de=nogetec.de/subdomain3
*.nogetec.de=nogetec.de/registrierung
Installation
Der hier vorgestellte Filter wurde in Delphi programmiert und steht Ihnen im Quelltext sowie als kompilierte DLL zur Verfügung.
Laden Sie sich das zip-Archiv herunter, entpacken Sie dieses und kopieren Sie anschließend die Dateien Subdomains.dll und Subdomains.ini in ein beliebiges Verzeichnis. Wählen Sie in der IIS-MMC den gewünschten Host aus, gehen Sie unter Eigenschaften | ISAPI-Filter auf hinzufügen und tragen Sie unter Filtername 'Subdomains sowie unter 'Ausführbare Datei' den vollständigen Pfad zur DLL ein.
Konfiguration
Zur Konfiguration dient die Datei Subdomains.ini, die sich im gleichen Verzeichnis wie die DLL befinden muss. Die Datei enthält zwei Abschnitte: '[Config]' zum Festlegen allgemeiner Konfigurationsdaten sowie '[Mapping]' zum Festlegen der eigentlichen Abbildungen.
Im Bereich '[Config]' sind standardmäßig folgende Werte eingestellt, die auch benutzt werden, falls einzelne Einträge fehlen:
[Config]
Requery=60
Logging=1
Requery
Bestimmt das Zeitintervall in Sekunden, nach dem das Inifile auf Änderungen geprüft und ggfs. neu geladen wird, bei einem Wert von 0 findet keine Überprüfung statt.
Logging (1=aktiviert, 0 =deaktiviert)
Bei aktiviertem Logging werden alle vom Filter vorgenommenen Abbildungen in der Datei 'Log.txt' im Verzeichnis des Filters protokolliert. Dies wirkt sich negativ auf die Performance aus, erleichtert aber ggfs. die Fehlersuche.
Im Abschnitt '[Mapping]' werden die eigentlichen Abbildungen festgelegt, jede Zeile muss genau einen Eintrag enthalten. Sie können hier beliebig viele Abbildungen festlegen, beachten Sie jedoch, dass diese sequentiell durchsucht werden müssen - es sollten daher nicht allzu viele sein. Eine Abbildung muss in der Form
subdomain1.domain.tld=domain.tld/Path/
angegeben werden. Darüberhinaus besteht, wie bereits beschrieben, die Möglichkeit, den Subdomainnamen durch ein Wildcard zu ersetzen. In diesem Fall kann auch im Pfadnamen ein Wildcard verwendet werden, dieses wird dann durch den jeweiligen Namen der Subdomain ersetzt.
Wenn Sie beispielsweise folgende Abbildung
*.nogetec.de=nogetec.de/subdomains/*
in der Konfigurationsdatei festlegen, werden folgende Konvertierungen vorgenommen:
sub1.nogetec.de/test1/seite1.asp => nogetec.de/subdomains/sub1/test1/seite1.asp
sub2.nogetec.de/test2/seite2.asp => nogetec.de/subdomains/sub2/test2/seite2.asp |