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:

  1. IIS 7.0 oder höher mit aktiviertem ASP.NET-Rollendienst
  2. 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“:

Screenshot of the I I S Manager's Default Web Site Home screen with a focus on the U R L Rewrite option.

Ä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:

Screenshot of the U R L Rewrite screen with a focus on the View Server Variables option in the Actions pane.

Verwenden Sie die Aktion „Hinzufügen...“, um die Servervariablen „HTTP_COOKIE“ und „ORIGINAL_URI“ zur Liste „Zulässige Servervariablen“ hinzuzufügen:

Screenshot of the Add Server Variable dialog box with ORIGINAL underscore U R I entered as the Server variable name.

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:

Screenshot of the U R L Rewrite screen with a focus on the View Rewrite Maps option in the Actions pane.

Klicken Sie auf "Umschreibungszuordnung hinzufügen..." und geben Sie für den Namen der Zuordnung „Sprachen“ an:

Screenshot of the Add Rewrite Map dialog box with Languages entered as the Rewrite map name.

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:

Screenshot of the Edit Rewrite Map dialog box showing E N underscore U S as the default value to use when the key is not found in the map.

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:

Screenshot of the Edit Inbound Rule screen showing the Name, Match U R L, Conditions, Server Variables, and Actions sections.

  • 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:

Screenshot of the Server Variables dialog box with H T T P underscore COOKIE and ORIGINAL underscore U R L entered in the Name field.

  • 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

Screenshot of the U R L Rewrite Module v 2 Test webpage with focus on the U R L bar, the Language cookie is set to F R underscore F R.

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.