Festlegen von HTTP-Anforderungsheadern und IIS-Servervariablen
von Ruslan Yakushev
Dieser Abschnitt der Dokumentation bezieht sich auf URL Rewrite in der Modulversion 2.0 für IIS 7.
Diese exemplarische Vorgehensweise führt Sie durch die Verwendung von URL-Rewrite-Modul v 2.0 zum Festlegen von HTTP-Anforderungsheadern und IIS-Servervariablen.
Voraussetzungen
Für diese exemplarische Vorgehensweise wird Folgendes vorausgesetzt:
- IIS 7.0 oder höher mit aktiviertem ASP.NET-Rollendienst
- Installiertes URL-Rewrite-Modul 2.0
Einrichten eines Szenarios für die exemplarische Vorgehensweise
Um zu veranschaulichen, wie das URL-Rewrite-Modul 2.0 zum Festlegen von HTTP-Headern und IIS-Servervariablen verwendet wird, werden wir ein Szenario implementieren, in dem der HTTP-Cookieheader in der Anforderung basierend auf der angeforderten URL festgelegt wird. Angenommen, Sie verfügen über eine Webanwendung, die lokalisierte Webseiten bereitstellt. Die Webanwendung bestimmt basierend auf dem HTTP-Cookie in der Anforderung die Sprache für die Antwort. Das Problem mit diesem Ansatz besteht darin, dass Suchmaschinen den lokalisierten Inhalt dieser Anwendung nicht indizieren, da Suchmaschinencrawler keine HTTP-Cookies verwenden. Dadurch stellt die Webanwendung den Inhalt die Inhalte in der Standardsprache bereit. Um dieses Problem zu lösen, entscheiden Sie sich, Informationen zur Sprache als Teil der URL hinzuzufügen, z. B. http://www.contoso.com/default.aspx
, und verwenden dann das URL-Rewrite-Modul 2.0, um das Cookie festzulegen, das die Webanwendung erwartet, um die Sprache für die Antwort zu bestimmen. Darüber hinaus möchten Sie eine andere Servervariable namens ORIGINAL_URI festlegen, die die ursprünglich angeforderte URI-Zeichenfolge enthält.
Um das exemplarische Szenario einzurichten, kopieren Sie den folgenden ASP.NET-Code, und fügen Sie ihn in eine Datei namens language.aspx im Ordner %SystemDrive%\inetpub\wwwroot\
ein:
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>URL Rewrite Module v2 Test - Setting Server Variables</title>
</head>
<body>
<h1>Setting HTTP request header and a server variable with URL Rewrite Module v2</h1>
<p>The value of the Language cookie is <strong><%=( Request.Cookies["Language"] != null ) ? Request.Cookies["Language"].Value : "Cookie not set" %></strong></p>
<p>The originally requested URI is <strong><%= HttpUtility.HtmlEncode( Request.ServerVariables["ORIGINAL_URI"] ) %></strong></p>
</body>
</html>
Navigieren Sie nach dem Kopieren dieser Datei zu http://localhost/language.aspx
, und überprüfen Sie, ob die Seite korrekt in einem Browser gerendert wurde.
Erstellen einer Umschreibungsregel
Sie erstellen eine Umschreibungsregel, die URLs mithilfe des folgenden Formats umschreibt:
http://localhost/<language>/anyfile.aspx
wird umgeschrieben als:
http://localhost/anyfile.aspx
Die Umschreibungsregel legt auch zwei IIS-Servervariablen fest:
- HTTP_COOKIE
- ORIGINAL_URI
Sie erstellen eine Umschreibungsregel mithilfe der URL Rewrite-Benutzeroberfläche im IIS-Manager.
Öffnen Sie den IIS-Manager, wählen Sie in der Strukturansicht auf der linken Seite „Standardwebsite“ aus, und öffnen Sie dann die Funktion „URL Rewrite“:
Ändern von Servervariablen zulassen
Standardmäßig können die verteilten Umschreibungsregeln (d. h. die Regeln, die für bestimmte Websites oder Webanwendungen definiert sind) keine IIS-Servervariable festlegen oder ändern, es sei denn, die Servervariable wird zur Zulassungsliste hinzugefügt. Für diese exemplarische Vorgehensweise müssen Sie zur Liste „Zulässige Servervariablen“ die folgenden beiden Servervariablen hinzufügen:
- HTTP_COOKIE
- ORIGINAL_URI
Hinweis
die Liste „Zulässige Servervariablen“ gilt nicht für die globalen Regeln, die auf Serverebene definiert sind. Es ist nicht erforderlich, der Zulassungsliste eine Servervariable hinzuzufügen, wenn diese mithilfe einer globalen Umschreibungsregel festgelegt ist.
Wählen Sie die Aktion „Servervariablen anzeigen...“ aus dem Bereich „Aktionen“ aus:
Verwenden Sie die Aktion „Hinzufügen...“, um die Servervariablen „HTTP_COOKIE“ und „ORIGINAL_URI“ zur Liste „Zulässige Servervariablen“ hinzuzufügen:
Nachdem die Liste „Zulässige Servervariablen“ aktualisiert wurde, klicken Sie auf die Aktion „Zurück zu Regeln“, um zur Listenansicht der Regeln zurückzukehren.
Definieren der Umschreibungszuordnung
Der nächste Schritt besteht darin, eine Umschreibungszuordnung zu definieren, die verwendet wird, um den URL-Teil zuzuordnen, der die Sprache dem Gebietsschemabezeichner darstellt, der von der Umschreibungsregel im HTTP-Cookieheader gespeichert wird.
Wählen Sie die Aktion „Umschreibungszuordnungen anzeigen...“ im Bereich „Aktionen“ aus:
Klicken Sie auf "Umschreibungszuordnung hinzufügen..." und geben Sie für den Namen der Zuordnung „Sprachen“ an:
Diese Zuordnung definiert Zuordnungen zwischen dem URL-Teil, der eine Sprache repräsentiert, und dem Gebietsschemabezeichner, der beim Festlegen des HTTP-Anforderungscookies verwendet werden soll. Klicken Sie auf die Aktion „Zuordnungseinstellungen bearbeiten...“ um den Standardwert anzugeben, der verwendet werden soll, wenn keine Zuordnung gefunden werden kann. Geben Sie „en_US“ als Standardwert ein:
Schließen Sie das Dialogfeld, und verwenden Sie dann die Aktion „Zuordnungseintrag hinzufügen...“, um die folgenden Zuordnungen hinzuzufügen:
Ursprünglicher Wert: | Neuer Wert: |
---|---|
fr-fr | fr_FR |
de-de | de-DE |
ru-ru | ru_RU |
Definieren der Umschreibungsregel
Erstellen Sie zum Schluss eine Umschreibungsregel, die die Servervariablen mithilfe der zuvor definierten Umschreibungszuordnung festlegt.
Öffnen Sie das Dialogfeld „Regel bearbeiten“, indem Sie in der Ansicht mit den Hauptfunktionen auf die Aktion „Regeln hinzufügen“ klicken und aus der Kategorie „Eingangsregeln" auf „Leere Regel“ klicken. Geben Sie die Regelkonfiguration wie folgt ein:
Regelname: „Servervariablen festlegen“
Angeforderte URL: „Entspricht dem Muster“
Verwendung: „Reguläre Ausdrücke“
Muster: „^([a-z]{2}-[a-z]{2})/(.*)“
Bedingungen:
- Eingabe: „{Languages:{R:1}}“
- Typ: „Entspricht den Mustern“
- Muster: „(.+)“
Aktion:
- Typ: „Umschreibung“
- Umschreibungs-URL: „{R:2}“
Das Muster der Regel entspricht jedem URL-Pfad, der das Sprachsegment enthält (z. B http://www.contoso.com/de-de/default.aspx
). Es erfasst außerdem das Sprachsegment und den Rest des URL-Pfads in den Regelrückverweisen, sodass sie später in der Regel wiederverwendet werden können. Die Regelbedingung verwendet das zuvor erfasste Sprachsegment als Nachschlageschlüssel, der an die Umschreibungszuordnung „Sprachen“ übergeben wird. Das Ergebnis der Zuordnungssuche wird im Bedingungsrückverweis gespeichert. Die Regelaktion schreibt die URL um, sodass sie das Sprachsegment nicht enthält.
Erweitern Sie die „Servervariablen...“ und geben Sie die Werte an, die zum Festlegen der Servervariablen verwendet werden sollen:
- Name: HTTP_COOKIE, Wert: Language={C:1}
- Name: ORIGINAL_URI, Wert: http://{HTTP_HOST}{REQUEST_URI}
Das HTTP-Cookie wird mithilfe des Bedingungsrückverweises festgelegt, der den Gebietsschemabezeichner enthält, der aus der Umschreibungszuordnung „Sprachen“ abgerufen wird. Der Wert für die Servervariable „ORIGINAL_URI“ wird mithilfe der Servervariablen „{HTTP_HOST}“ und „{REQUEST_URI}“ erstellt.
Klicken Sie auf „OK“, um das Dialogfeld zu schließen, und dann im Bereich „Aktionen“ auf der rechten Seite auf „Übernehmen“, um die Regel zu speichern.
Testen der Regel
Um zu testen, ob die Regel das Cookie und eine Servervariable korrekt festlegt, öffnen Sie einen Webbrowser, und fordern Sie die folgende URL an:
http://localhost/fr-fr/language.aspx
Sie sollten sehen, dass die Umschreibungsregel das Cookie „Sprache“ gemäß der angeforderten URL festgelegt hat. Außerdem wurde die ursprüngliche URL-Zeichenfolge für die ASP.NET-Seite über die Servervariable „ORIGINAL_URI“ verfügbar gemacht.