HTTP-Umleitungen <httpRedirect>
Das <httpRedirect>
-Element konfiguriert Einstellungen für Internetinformationsdienste 7 (Internet Information Services, IIS), um Clientanforderungen umzuleiten.
Die Umleitung von Clients an einen neuen Ort kann verschiedene Gründe haben. Wenn Ihr Unternehmen beispielsweise eine Migration zu einer neuen Website durchführt, können Sie alle Anforderungen von der alten Website an die neue Website umleiten. Ähnlich verhält es sich, wenn Sie eine neue Anwendung auf einem Webserver bereitgestellt haben. In diesem Fall können Sie alle Anforderungen für den URL-Namespace der alten Anwendung (z. B. http://www.contoso.com/app_v1.0/
) an den neuen Speicherort der Anwendung (z. B. http://www.contoso.com/app_v2.0/
) umleiten.
In der einfachsten Konfiguration müssen Sie nur die Attribute enabled und destination des <httpRedirect>
-Elements festlegen, um Clients an einen neuen Speicherort umzuleiten. Mithilfe zusätzlicher Elemente wie den Attributen exactDestination und httpResponseStatus können Sie jedoch die Endbenutzererfahrung der Umleitung konfigurieren, indem Sie angeben, ob IIS 7 die Ziel-URL genau wie eingegeben zurückgibt und welcher HTTP-Antwortcode an den Webclient zurückgegeben werden soll.
Kompatibilität
Version | Hinweise |
---|---|
IIS 10.0 | Dem <httpRedirect> -Element wurde in IIS 10.0 ein zusätzlicher HTTP-Antwortstatus hinzugefügt. |
IIS 8.5 | Das <httpRedirect> -Element wurde in IIS 8.5 nicht geändert. |
IIS 8.0 | Das <httpRedirect> -Element wurde in IIS 8.0 nicht geändert. |
IIS 7.5 | Das <httpRedirect> -Element wurde in IIS 7.5 nicht geändert. |
IIS 7.0 | Das <httpRedirect> -Element wurde in IIS 7.0 eingeführt. |
IIS 6.0 | Das <httpRedirect> -Element ersetzt die HttpRedirect-Metabasiseigenschaft von IIS 6.0. |
Setup
Die HTTP-Umleitung ist in der Standardinstallation von IIS 7 und höheren Versionen nicht verfügbar. Führen Sie die folgenden Schritte aus, um sie zu installieren:
Windows Server 2012 oder Windows Server 2012 R2
- Klicken Sie auf der Taskleiste auf Server-Manager.
- Klicken Sie im Server-Manager auf Verwalten und dann auf Rollen und Features hinzufügen.
- Klicken Sie im Assistenten zum Hinzufügen von Rollen und Features auf Weiter. Wählen Sie den Installationstyp aus, und klicken Sie auf Weiter. Wählen Sie den Zielserver aus, und klicken Sie auf Weiter.
- Erweitern Sie auf der Seite Serverrollen das Element Webserver (IIS). Erweitern Sie anschließend Webserver und Allgemeine HTTP-Features, und wählen Sie dann HTTP-Umleitung aus. Klicken Sie auf Weiter.
- Klicken Sie auf der Seite Features auswählen auf Weiter.
- Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
- Klicken Sie auf der Seite Ergebnisse auf Schließen.
Windows 8 oder Windows 8.1
- Bewegen Sie auf dem Startbildschirm den Mauszeiger ganz nach links unten, klicken Sie mit der rechten Maustaste auf die Schaltfläche Start, und klicken Sie dann auf Systemsteuerung.
- Klicken Sie in der Systemsteuerung auf Programme und Features und dann auf Windows-Features aktivieren oder deaktivieren.
- Erweitern Sie Internetinformationsdienste > WWW-Dienste > Allgemeine HTTP-Features, und wählen Sie anschließend HTTP-Umleitung aus.
- Klicken Sie auf OK.
- Klicken Sie auf Schließen.
Windows Server 2008 oder Windows Server 2008 R2
- Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltungstools, und klicken Sie dann auf Server-Manager.
- Erweitern Sie im Hierarchiebereich Server-Manager die Option Rollen, und klicken Sie dann auf Webserver (IIS).
- Scrollen Sie im Bereich Webserver (IIS) zum Abschnitt Rollendienste, und klicken Sie dann auf Rollendienste hinzufügen.
- Erweitern Sie auf der Seite Rollendienste auswählen des Assistenten zum Hinzufügen von Rollendiensten das Element Allgemeine HTTP-Features, wählen Sie HTTP-Umleitung aus, und klicken Sie dann auf Weiter.
- Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
- Klicken Sie auf der Seite Ergebnisse auf Schließen.
Windows Vista oder Windows 7
- Klicken Sie auf der Taskleiste auf Start und dann auf Systemsteuerung.
- Klicken Sie in der Systemsteuerung auf Programme und Features und dann auf Windows-Features aktivieren oder deaktivieren.
- Erweitern Sie Internetinformationsdienste > WWW-Dienste > Allgemeine HTTP-Features.
- Wählen Sie HTTP-Umleitung aus, und klicken Sie dann auf OK.
Gewusst wie
Für IIS 7 steht keine Benutzeroberfläche zum Hinzufügen von HTTP-Umleitungen mit Platzhaltern zur Verfügung. Beispiele zum programmgesteuerten Hinzufügen von <add>
-Elementen zum <httpRedirect>
-Element finden Sie im Abschnitt Codebeispiele dieses Dokuments.
Hinzufügen einer HTTP-Umleitungsregel zu einer Website oder Anwendung
Öffnen Sie Internetinformationsdienste-Manager (IIS-Manager):
Vorgehensweise unter Windows Server 2012 oder Windows Server 2012 R2:
- Klicken Sie auf der Taskleiste auf Server-Manager > Tools > Internetinformationsdienste-Manager (IIS-Manager).
Vorgehensweise unter Windows 8 oder Windows 8.1:
- Halten Sie die WINDOWS-TASTE gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf Systemsteuerung.
- Klicken Sie auf Verwaltung, und doppelklicken Sie dann auf Internetinformationsdienste-Manager (IIS-Manager).
Vorgehensweise unter Windows Server 2008 oder Windows Server 2008 R2:
- Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltung, und klicken Sie dann auf Internetinformationsdienste-Manager (IIS-Manager).
Vorgehensweise unter Windows Vista oder Windows 7:
- Klicken Sie auf der Taskleiste auf Start und dann auf Systemsteuerung.
- Doppelklicken Sie auf Verwaltung, und doppelklicken Sie dann auf Internetinformationsdienste-Manager (IIS-Manager).
Erweitern Sie im Bereich Verbindungen den Servernamen, erweitern Sie Sites, und navigieren Sie dann zu der Website oder Anwendung, für die Sie benutzerdefinierte Fehlerseiten konfigurieren möchten.
Aktivieren Sie im Bereich HTTP-Umleitung das Kontrollkästchen zum Umleiten von Anforderungen, und geben Sie die Ziel-URL ein.
Optional können folgende Optionen angegeben werden:
Konfigurieren Sie das Umleitungsziel so, dass exakt das eingegebene Ziel verwendet wird.
Konfigurieren Sie das Umleitungsziel so, dass es auf den Stammordner der Ziel-URL und nicht auf Unterordner beschränkt ist.
Konfigurieren Sie für den HTTP-Statuscode eine der folgenden möglichen Optionen:
- 301 – Permanent
- 302 – Gefunden
- 307 – Temporär
- 308 (Permanente Umleitung)
Hinweis
IIS 7 gibt für die oben angegebenen Optionen jeweils den folgenden tatsächlichen HTTP-Antwortstatus zurück:
- HTTP/1.1 301 – Permanent verschoben
- HTTP/1.1 302 – Umleitung
- HTTP/1.1 307 – Umleitung
- HTTP/1.1 308 – Permanent
Klicken Sie nach Abschluss aller oben angegebenen Änderungen im Bereich Aufgaben auf Anwenden.
Konfiguration
Attribute
Attribut | Beschreibung | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
childOnly |
Optionales boolesches Attribut. Gibt an, ob der Zielwert dem Dateinamen vorangestellt werden soll, der die umzuleitende Anforderung enthält. Wenn beispielsweise childOnly auf „true“ und der Zielwert auf http://marketing.contoso.com/ festgelegt wurde, wird eine Anforderung für http://contoso.com/default.htm an http://marketing.contoso.com/default.htm umgeleitet. Der Standardwert ist false . |
||||||||||
destination |
Optionales Zeichenfolgeattribut. Gibt eine URL oder einen virtuellen Pfad an, an die bzw. zu dem der Client umgeleitet werden soll. |
||||||||||
enabled |
Optionales boolesches Attribut. Gibt an, ob die Umleitung aktiviert (true) oder deaktiviert (false) ist. Der Standardwert ist false . |
||||||||||
exactDestination |
Optionales boolesches Attribut. Gibt an, dass der Zielwert nicht als relativer Speicherort, sondern als absoluter Zielspeicherort betrachtet werden soll. Der Standardwert ist false . |
||||||||||
httpResponseStatus |
Optionales enum-Attribut. Gibt die Art der Umleitung an. Das httpResponseStatus-Attribut kann einen der folgenden Werte haben. Der Standardwert ist Found .
|
Untergeordnete Elemente
Element | Beschreibung |
---|---|
add |
Optionales Element. Fügt der Sammlung von Umleitungsregeln eine Umleitungsregel mit Platzhalter hinzu. |
clear |
Optionales Element. Entfernt alle Verweise auf Umleitungsregeln mit Platzhalter aus der Sammlung von Umleitungsregeln. |
remove |
Optionales Element. Entfernt einen Verweis auf eine Umleitungsregel mit Platzhalter aus der Sammlung von Umleitungsregeln. |
Konfigurationsbeispiel
Das folgende <httpRedirect>
-Standardelement wird in der Stammdatei „ApplicationHost.config“ in IIS 7 konfiguriert, wenn der Rollendienst „HTTP-Umleitung“ installiert wird. Dieser Konfigurationsabschnitt erbt die Standardkonfigurationseinstellungen, es sei denn, Sie verwenden das <clear>
-Element.
<system.webServer>
<httpRedirect enabled="false" />
</system.webServer>
Im folgenden Konfigurationsbeispiel wird die Umleitung aktiviert und die Ziel-URL konfiguriert, an die Clients umgeleitet werden.
<system.webServer>
<httpRedirect enabled="true" destination="http://www.contoso.com/" />
</system.webServer>
Im folgenden Konfigurationsbeispiel wird ein Umleitungseintrag mit Platzhalter hinzugefügt, der alle Anforderungen für PHP-Dateien an die Startseite Ihrer Website umleitet.
Hinweis
Dieses Beispiel ist hilfreich, wenn Sie alle ASP-basierten Anwendungen von Ihrer Website entfernt haben und möchten, dass Clientanforderungen für die alten Anwendungen an den Stamm Ihrer Website umgeleitet werden, anstatt eine Antwort vom Typ HTTP 404 – Nicht gefunden auszugeben.
<configuration>
<system.webServer>
<httpRedirect enabled="true" exactDestination="true" httpResponseStatus="Found">
<add wildcard="*.php" destination="/default.htm" />
</httpRedirect>
</system.webServer>
</configuration>
Beispielcode
In den folgenden Codebeispielen wird die Standardwebsite so konfiguriert, dass alle Anforderungen unter Verwendung eines HTTP 302-Statuscodes an http://www.contoso.com
umgeleitet werden.
AppCmd.exe
appcmd.exe set config "Default Web Site" -section:system.webServer/httpRedirect /enabled:"True"
appcmd.exe set config "Default Web Site" -section:system.webServer/httpRedirect /destination:"http://www.contoso.com"
appcmd.exe set config "Default Web Site" -section:system.webServer/httpRedirect /exactDestination:"False"
appcmd.exe set config "Default Web Site" -section:system.webServer/httpRedirect /httpResponseStatus:"Found"
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample
{
private static void Main()
{
using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetWebConfiguration("Default Web Site");
ConfigurationSection httpRedirectSection = config.GetSection("system.webServer/httpRedirect");
httpRedirectSection["enabled"] = true;
httpRedirectSection["destination"] = @"http://www.contoso.com";
httpRedirectSection["exactDestination"] = false;
httpRedirectSection["httpResponseStatus"] = @"Found";
serverManager.CommitChanges();
}
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetWebConfiguration("Default Web Site")
Dim httpRedirectSection As ConfigurationSection = config.GetSection("system.webServer/httpRedirect")
httpRedirectSection("enabled") = True
httpRedirectSection("destination") = "http://www.contoso.com"
httpRedirectSection("exactDestination") = False
httpRedirectSection("httpResponseStatus") = "Found"
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site";
var httpRedirectSection = adminManager.GetAdminSection("system.webServer/httpRedirect", "MACHINE/WEBROOT/APPHOST/Default Web Site");
httpRedirectSection.Properties.Item("enabled").Value = true;
httpRedirectSection.Properties.Item("destination").Value = "http://www.contoso.com";
httpRedirectSection.Properties.Item("exactDestination").Value = false;
httpRedirectSection.Properties.Item("httpResponseStatus").Value = "Found";
adminManager.CommitChanges();
VBScript
Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site"
Set httpRedirectSection = adminManager.GetAdminSection("system.webServer/httpRedirect", "MACHINE/WEBROOT/APPHOST/Default Web Site")
httpRedirectSection.Properties.Item("enabled").Value = True
httpRedirectSection.Properties.Item("destination").Value = "http://www.contoso.com"
httpRedirectSection.Properties.Item("exactDestination").Value = False
httpRedirectSection.Properties.Item("httpResponseStatus").Value = "Found"
adminManager.CommitChanges()
In den folgenden Codebeispielen wird ein Umleitungseintrag hinzugefügt, der alle Anforderungen für ASP-Dateien an die Startseite Ihrer Website umleitet.
Hinweis
Dieses Beispiel ist hilfreich, wenn Sie alle ASP-basierten Anwendungen von Ihrer Website entfernt haben und möchten, dass Clientanforderungen für die alten Anwendungen an den Stamm Ihrer Website umgeleitet werden, anstatt eine Antwort vom Typ HTTP 404 – Nicht gefunden auszugeben.
AppCmd.exe
appcmd.exe set config "Default Web Site" -section:system.webServer/httpRedirect /enabled:"True" /exactDestination:"True" /httpResponseStatus:"Found"
appcmd.exe set config "Default Web Site" -section:system.webServer/httpRedirect /+"[wildcard='*.asp',destination='/default.htm']"
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample
{
private static void Main()
{
using(ServerManager serverManager = new ServerManager()) {
Configuration config = serverManager.GetWebConfiguration("Default Web Site");
ConfigurationSection httpRedirectSection = config.GetSection("system.webServer/httpRedirect");
httpRedirectSection["enabled"] = true;
httpRedirectSection["exactDestination"] = true;
httpRedirectSection["httpResponseStatus"] = @"Found";
ConfigurationElementCollection httpRedirectCollection = httpRedirectSection.GetCollection();
ConfigurationElement addElement = httpRedirectCollection.CreateElement("add");
addElement["wildcard"] = @"*.asp";
addElement["destination"] = @"/default.htm";
httpRedirectCollection.Add(addElement);
serverManager.CommitChanges();
}
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetWebConfiguration("Default Web Site")
Dim httpRedirectSection As ConfigurationSection = config.GetSection("system.webServer/httpRedirect")
httpRedirectSection("enabled") = True
httpRedirectSection("exactDestination") = True
httpRedirectSection("httpResponseStatus") = "Found"
Dim httpRedirectCollection As ConfigurationElementCollection = httpRedirectSection.GetCollection
Dim addElement As ConfigurationElement = httpRedirectCollection.CreateElement("add")
addElement("wildcard") = "*.asp"
addElement("destination") = "/default.htm"
httpRedirectCollection.Add(addElement)
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site";
var httpRedirectSection = adminManager.GetAdminSection("system.webServer/httpRedirect", "MACHINE/WEBROOT/APPHOST/Default Web Site");
httpRedirectSection.Properties.Item("enabled").Value = true;
httpRedirectSection.Properties.Item("exactDestination").Value = true;
httpRedirectSection.Properties.Item("httpResponseStatus").Value = "Found";
var httpRedirectCollection = httpRedirectSection.Collection;
var addElement = httpRedirectCollection.CreateNewElement("add");
addElement.Properties.Item("wildcard").Value = "*.asp";
addElement.Properties.Item("destination").Value = "/default.htm";
httpRedirectCollection.AddElement(addElement);
adminManager.CommitChanges();
VBScript
Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site"
Set httpRedirectSection = adminManager.GetAdminSection("system.webServer/httpRedirect", "MACHINE/WEBROOT/APPHOST/Default Web Site")
httpRedirectSection.Properties.Item("enabled").Value = True
httpRedirectSection.Properties.Item("exactDestination").Value = True
httpRedirectSection.Properties.Item("httpResponseStatus").Value = "Found"
Set httpRedirectCollection = httpRedirectSection.Collection
Set addElement = httpRedirectCollection.CreateNewElement("add")
addElement.Properties.Item("wildcard").Value = "*.asp"
addElement.Properties.Item("destination").Value = "/default.htm"
httpRedirectCollection.AddElement(addElement)
adminManager.CommitChanges()