Freigeben über


Festlegen von HTTP-Anforderungsheadern und IIS-Servervariablen

von Ruslan Yakushev

Dieser Abschnitt der Dokumentation bezieht sich auf die URL Rewrite Module Version 2.0 für IIS 7.

Diese exemplarische Vorgehensweise führt Sie durch die Verwendung von URL Rewrite Module v 2.0 zum Festlegen von HTTP-Anforderungsheadern und IIS-Servervariablen.

Voraussetzungen

Für diese Anleitung sind folgende Voraussetzungen erforderlich:

  1. IIS 7.0 oder höher mit aktivierter ASP.NET Rollendienst
  2. URL Rewrite Module 2.0 installiert

Einrichten eines Schritt-für-Schritt-Szenarios

Um zu veranschaulichen, wie DAS URL Rewrite Module 2.0 zum Festlegen von HTTP-Headern und IIS-Servervariablen verwendet wird, implementieren wir ein Szenario, in dem der HTTP-Cookie-Header für die Anforderung basierend auf der angeforderten URL festgelegt wird. Angenommen, Sie verfügen über eine Webanwendung, die lokalisierte Webseiten bedient. Die Webanwendung bestimmt die Sprache für die Antwort basierend auf dem HTTP-Cookie in der Anforderung. Das Problem mit diesem Ansatz besteht darin, dass Suchmaschinen den lokalisierten Inhalt dieser Anwendung nicht indiziert, da Suchmaschinencrawler keine HTTP-Cookies verwenden und daher nur der Inhalt in der Standardsprache von der Webanwendung bedient wird. Um dieses Problem zu umgehen, entscheiden Sie sich, Informationen zur Sprache als Teil der URL hinzuzufügen, http://www.contoso.com/default.aspxz. B. und verwenden Sie dann URL Rewrite Module 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 den %SystemDrive%\inetpub\wwwroot\ Ordner in einer Datei namens language.aspx 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>

Wechseln Sie nach dem Kopieren dieser Datei zu http://localhost/language.aspx, und überprüfen Sie, ob die Seite in einem Browser korrekt dargestellt wurde.

Erstellen einer Neuschreibregel

Sie erstellen eine Neuschreibregel, die URLs mithilfe des folgenden Formats umschreibt:

http://localhost/<language>/anyfile.aspx
wird wie folgt umgeschrieben:
http://localhost/anyfile.aspx

Die Umschreibregel legt auch zwei IIS-Servervariablen fest:

  • HTTP_COOKIE
  • ORIGINAL_URI

Sie erstellen eine Neuschreibregel mithilfe der URL-Neuschreibbenutzeroberfläche im IIS-Manager.

Öffnen Sie den IIS-Manager, wählen Sie in der Strukturansicht auf der linken Seite die Option "Standardwebsite" aus, und öffnen Sie dann das Feature "URL Neu schreiben":

Screenshot der I S-Manager-Standardwebsite-Startseite mit dem Fokus auf der Option

Zulassen, dass Servervariablen geändert werden

Standardmäßig können die verteilten Neuschreibregeln (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 der Liste "Zulässig" hinzugefügt. Für diese exemplarische Vorgehensweise müssen Sie der 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 Liste "Zulässig" eine Servervariable hinzuzufügen, wenn diese Servervariable mithilfe einer globalen Umschreibregel festgelegt wird.

Wählen Sie die Aktion "Servervariablen anzeigen..." aus dem Bereich "Aktionen" aus.

Screenshot des Bildschirms

Verwenden Sie die Aktion "Hinzufügen..." zum Hinzufügen der Servervariablen HTTP_COOKIE und ORIGINAL_URI zur Liste "Zulässige Servervariablen":

Screenshot des Dialogfelds

Nachdem die Liste "Zulässige Servervariablen" aktualisiert wurde, klicken Sie auf die Aktion "Zurück zu Regeln", um zur Listenansicht der Regeln zurückzukehren.

Das 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 Rewrite-Regel im HTTP-Cookie-Header gespeichert wird.

Wählen Sie die Option "Karten neu schreiben anzeigen..." aus. Aktion im Bereich "Aktionen":

Screenshot des Bildschirms

Klicken Sie auf "Karte neu schreiben..." und geben Sie den Namen der Karte als "Sprachen" an:

Screenshot des Dialogfelds

Diese Karte definiert Zuordnungen zwischen dem URL-Teil, der eine Sprache darstellt, und dem beim Festlegen des HTTP-Anforderungscookies zu verwendenden Gebietsschemabezeichner. Klicken Sie auf "Karteneinstellungen bearbeiten...". um den Standardwert anzugeben, der verwendet werden soll, wenn keine Zuordnung gefunden werden kann. Geben Sie "en_US" als Standardwert ein:

Screenshot des Dialogfelds

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 Neuschreibregel

Schließlich erstellen Sie eine Rewrite-Regel, die die Servervariablen mithilfe der vorher definierten Rewrite-Zuordnung festlegt.

Öffnen Sie das Dialogfeld "Regel bearbeiten", indem Sie in der Hauptfeatureansicht auf die Aktion "Regeln hinzufügen..." klicken und aus der Kategorie "Eingehende Regeln" die Option "Leere Regel" auswählen. Geben Sie die Regelkonfiguration wie folgt ein:

Screenshot des Bildschirms

  • Regelname: "Servervariablen festlegen"

  • Angeforderte URL: "Entspricht dem Muster"

  • Verwenden: "Reguläre Ausdrücke"

  • Muster: "^([a-z]{2}-[a-z]{2})/(.*)"

  • Bedingungen:

    • Eingabe: "{Languages:{R:1}}"
    • Typ: "Entspricht den Mustern"
    • Muster: "(.+)"
  • Aktion:

    • Typ: "Neu schreiben"
    • URL neu schreiben: "{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. ). Außerdem werden das Sprachsegment und der rest des URL-Pfads in den Regelrückverweise erfasst, sodass sie später in der Regel wiederverwendet werden können. Die Regelbedingung verwendet das zuvor erfasste Sprachsegment als Nachschlageschlüssel, der in die RewriteMap "Languages" übergeben wird. Das Ergebnis der Kartensuche wird in der Bedingungsrückreferenz gespeichert. Die Regelaktion schreibt die URL so um, dass sie das Sprachsegment nicht mehr enthält.

Erweitern Sie die "Servervariablen..." und geben Sie die Werte an, die zum Festlegen der Servervariablen verwendet werden sollen:

Screenshot des Dialogfelds

  • 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 Locale-Identifier enthält, der aus der Rewrite-Zuordnung "Languages" 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 klicken Sie dann im Bereich "Aktionen" auf der rechten Seite auf "Übernehmen", um die Regel zu speichern.

Testen der Regel

Um zu testen, dass 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 der Webseite

Sie sollten sehen, dass die Neuschreibregel 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" zugänglich gemacht.