URL-Rewrite-Modul 2.1 URL-Rewrite-Modul – Regeln schreiben

URL-Rewrite-Modul 2.1 URL-Rewrite-Modul – Regeln schreiben

Voraussetzungen

Für diese exemplarische Vorgehensweise sind die folgenden Voraussetzungen erforderlich:

IIS installiert URL Rewrite Module 2.1

Kurze URL http://www.iis.net/extensions/URLRewrite

Seite herunterladen

https://www.iis.net/downloads/microsoft/url-rewrite#additionalDownloads

Link zum Herunterladen

https://download.microsoft.com/download/1/2/8/128E2E22-C1B9-44A4-BE2A-5859ED1D4592/rewrite_amd64_en-US.msi

https://download.microsoft.com/download/1/2/8/128E2E22-C1B9-44A4-BE2A-5859ED1D4592/rewrite_amd64_zh-CN.msi

IIS 7 oder höher mit aktiviertem ASP.NET-Rollendienst.
Das URL-Rewrite-Modul ist installiert. Weitere Informationen finden Sie unter Verwenden des URL-Rewrite-Moduls.

Einrichten einer Testseite

Um zu demonstrieren, wie das URL-Rewrite-Modul funktioniert, verwenden wir eine einfache ASP.NET-Testseite. Diese Seite liest Webservervariablen und gibt deren Werte im Browser aus.

Kopieren Sie den folgenden ASP.NET-Code und platzieren Sie ihn im Ordner %SystemDrive%\inetpub\wwwroot\ in einer Datei mit dem Namen article.aspx:

<%@ Seitensprache="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">
<Kopf>
<meta http-equiv="Inhaltstyp" content="text/html; charset=utf-8" />
<title>Test des URL-Rewrite-Moduls</title>
</Kopf>
<Text>
  <h1>Testseite des URL-Rewrite-Moduls</h1>
  <Tabelle>
   <tr>
     <th>Servervariable</th>
     <th>Wert</th>
   </tr>
   <tr>
     <td>Ursprüngliche URL: </td>
     <td><%= Anfrage.ServerVariables["HTTP_X_ORIGINAL_URL"] %></td>
   </tr>
   <tr>
     <td>Endgültige URL: </td>
     <td><%= Request.ServerVariables["SCRIPT_NAME"] + "?" + Request.ServerVariables["QUERY_STRING"] %></td>
   </tr>
  </Tabelle>
</body>
</html>

Navigieren Sie nach dem Kopieren dieser Datei zu http://localhost/article.aspx und prüfen Sie, ob die Seite im Browser korrekt dargestellt wird.

Erstellen von Umschreibregeln

Wir erstellen eine einfache Umschreibregel, die die URL im folgenden Format umschreibt:

http://localhost/article/342/ein-artikeltitel

Zu:

http://localhost/article.aspx?id=342&title=some-article-title.

Wir erstellen mithilfe der URL-Rewrite-Benutzeroberfläche im IIS-Manager eine Umschreibregel. Gehen Sie hierzu folgendermaßen vor:

1. Gehen Sie zum IIS-Manager.

2. Wählen Sie „Standardwebsite“.

3. Klicken Sie in der Funktionsansicht auf „URL umschreiben“.

4. Klicken Sie im Aktionsbereich rechts auf Regel hinzufügen….

5. Wählen Sie im Dialogfeld „Regel hinzufügen“ die Option „Leere Regel“ aus und klicken Sie dann auf „OK“.

Jetzt müssen Sie die eigentlichen Umschreibregeln definieren. Im URL-Umschreibmodul werden Umschreibregeln durch die Angabe von vier erforderlichen Informationen definiert:

  • Regelname.
  • Muster zum Abgleichen mit der URL-Zeichenfolge.
  • Ein optionaler Satz von Bedingungen.
  • Die Aktion, die ausgeführt werden soll, wenn das Muster übereinstimmt und alle Bedingungsprüfungen erfolgreich sind.

Namenskonvention

Geben Sie im Textfeld „Name“ einen Namen ein, der diese Regel eindeutig identifiziert, zum Beispiel: „Umschreiben in article.aspx“.

Definieren des Modus

Geben Sie im Textfeld Muster die folgende Zeichenfolge ein:

^Artikel/([0-9]+)/([_0-9a-z-]+)

Diese Zeichenfolge ist ein regulärer Ausdruck, der angibt, dass das Muster mit jeder URL-Zeichenfolge übereinstimmt, die die folgenden Bedingungen erfüllt:

  1. Beginnt mit der Zeichenfolge „article/“.
  2. Fügen Sie nach dem ersten "/" ein oder mehrere numerische Zeichen ein.
  3. Enthält ein oder mehrere alphanumerische oder "_"- oder "-"-Zeichen nach dem zweiten "/".

Beachten Sie, dass einige Teile des regulären Ausdrucks in Klammern stehen. Diese Klammern erstellen Erfassungsgruppen, auf die später in der Regel durch Rückverweise verwiesen werden kann.

Aktionen definieren

Da die Regel, die wir erstellen werden, URLs umschreiben soll, wählen Sie den Typ „Aktion umschreiben“ aus, der im Gruppenfeld „Aktion“ aufgeführt ist. Geben Sie im Textfeld „URL umschreiben:“ die folgende Zeichenfolge ein:

artikel.aspx?id={R:1}&title={R:2}

Diese Zeichenfolge gibt den neuen Wert an, in den die Eingabe-URL umgeschrieben werden soll. Beachten Sie, dass wir für die Werte der Abfragezeichenfolgenparameter {R:1} und {R:2} verwendet haben, die Rückverweise auf die Erfassungsgruppen sind, die im Regelmuster mit Klammern definiert sind.

Belassen Sie für alle anderen Einstellungen die Standardwerte. Die Eigenschaftenseite „Eingehende Regeln bearbeiten“ sollte wie folgt aussehen:

Speichern Sie die Regel, indem Sie rechts auf „Übernehmen“ klicken.

Anzeigen der Umschreibregeln in der Konfigurationsdatei

Umschreibregeln werden in der Datei ApplicationHost.config oder der Datei Web.config gespeichert. Um die Konfiguration der soeben erstellten Regel zu überprüfen, öffnen Sie die Datei Web.config in %SystemDrive%\inetpub\wwwroot. In dieser Datei sollten Sie einen <rewrite>-Abschnitt mit dieser Regeldefinition sehen:

<umschreiben>
 <Regeln>
 <Regelname="Umschreiben in Artikel.aspx">
  <match url="^Artikel/([0-9]+)/([_0-9a-z-]+)" />
  <action type="Umschreiben" url="article.aspx?id={R:1}&amp;title={R:2}" />
 </Regel>
 </Regeln>
</umschreiben>

Die obige Syntax gilt auch für die Konfiguration der URL-Umschreibung in Web.config von Windows Azure Websites (WAWS).

Testen der Umschreibregeln

Um zu testen, ob die Regel die URL korrekt umschreibt, öffnen Sie einen Webbrowser und fordern Sie die folgende URL an:

http://localhost/article/234/ein-titel

Sie sollten sehen, dass die Umschreiberegeln auf dem Webserver die ursprüngliche URL in Article.aspx geändert haben und dass „234“ und „some-title“ als Werte der Abfragezeichenfolgenparameter übergeben wurden.

Umleitungsregeln erstellen

Jetzt erstellen wir eine Umleitungsregel, die alle URLs im folgenden Format umleitet:

http://localhost/blog/ein-anderer-titel/543
Das Format ist wie folgt:
http://localhost/article/543/ein-anderer-titel

Umleitungsregeln lassen zu, dass mehr als eine URL auf eine einzelne Webseite verweist.

Öffnen Sie hierzu die Benutzeroberfläche der URL-Umschreibungsfunktion im IIS-Manager. Klicken Sie auf „Regel hinzufügen…“ und wählen Sie erneut die Vorlage „Leere Regel“ aus.

Geben Sie auf der Seite „Regel bearbeiten“ Folgendes ein:

  • Name: Weiterleitung vom Blog (Dies ist ein eindeutiger Name für die Regel.)
  • Muster: ^blog/([[_0-9a-z-]+)/([0-9]+) (Dieses Muster stimmt mit einer URL-Zeichenfolge überein, die mit „blog“ beginnt, und erfasst den zweiten und dritten Teil der URL als Rückverweise.)
  • Aktion: Umleitung (Eine Umleitungsaktion führt dazu, dass eine Umleitungsantwort an den Browser zurückgesendet wird.)
  • Umleitungs-URL: Artikel/{R:2}/{R:1} (Diese Ersetzungszeichenfolge wird als Umleitungs-URL verwendet. Beachten Sie, dass sie Rückverweise verwendet, um die ursprüngliche URL, die während des Mustervergleichs erfasst wurde, beizubehalten und neu anzuordnen.)

Geben Sie einen Namen, Stil und eine Aktion wie unten gezeigt ein:

Geben Sie die Weiterleitungs-URL wie unten gezeigt ein:

Belassen Sie für alle anderen Einstellungen die Standardwerte. Speichern Sie die Regel, indem Sie rechts auf „Übernehmen“ klicken.

Umleitungsregeln testen

Um zu testen, ob die Regel die Anforderungen korrekt umleitet, öffnen Sie einen Webbrowser und fordern Sie die folgende URL an:

http://localhost/blog/ein-anderer-titel/323

Sie sollten sehen, dass der Browser aufgrund der Ausführung der Umleitungsregel zu http://localhost/article/323/some-other-title umgeleitet wird und die Anforderung dann entsprechend der Umschreiberegel, die Sie zuvor erstellt haben, umgeschrieben wird.

Erstellen einer Zugriffssperrregel

Die dritte Regel, die wir erstellen, blockiert alle Anfragen an die Website, für die kein Host-Header festgelegt ist. Dieser Regeltyp ist nützlich, wenn Sie Hackerangriffe verhindern möchten, die durch HTTP-Anfragen an die IP-Adresse des Servers statt an den Hostnamen erfolgen.

Wir werden diese Regel erstellen, ohne den IIS-Manager zu verwenden. Öffnen Sie die Datei Web.config im Ordner %SystemDrive%\inetpub\wwwroot\, die Sie am Anfang dieses Artikels für die Testdatei article.aspx verwendet haben. Suchen Sie den Abschnitt <rewrite>. Fügen Sie die folgende Regel in die <rules>-Sammlung ein, sodass sie die erste Regel in der Sammlung ist:

<Regelname="Fehlerhafte Anfragen abweisen">
 <übereinstimmende URL=".*"/>
 <Bedingungen>
 <add input="{HTTP_HOST}" pattern="localhost" negate="true" />
 </Bedingungen>
 <Aktionstyp="AbbruchAnfrage" />
</Regel>

Der Abschnitt <rewrite> sollte dem folgenden Code ähneln:

<umschreiben>
 <Regeln>
 <Regelname="Fehlerhafte Anfragen abweisen">
  <übereinstimmende URL=".*"/>
  <Bedingungen>
  <add input="{HTTP_HOST}" pattern="localhost" negate="true" />
  </Bedingungen>
  <Aktionstyp="AbbruchAnfrage" />
 </Regel>
 <Regelname="Weiterleitung vom Blog">
  <match url="^blog/([_0-9a-z-]+)/([0-9]+)" />
  <action type="Umleitung" url="article/{R:2}/{R:1}" redirectType="Gefunden" />
 </Regel>
 <Regelname="Umschreiben in Artikel.aspx">
  <match url="^Artikel/([0-9]+)/([_0-9a-z-]+)" />
  <action type="Umschreiben" url="article.aspx?id={R:1}&amp;title={R:2}" />
 </Regel>
 </Regeln>
</umschreiben>

Lassen Sie uns die Regel analysieren, um zu verstehen, was sie bewirkt.

<übereinstimmende URL=".*"/>

Das obige Element gibt an, dass diese Regel mit jeder URL-Zeichenfolge übereinstimmt.

<add input="{HTTP_HOST}" pattern="localhost" negate="true" />

Das obige Element fügt der Regel eine Bedingung hinzu, die den Host-Header-Wert abruft, indem sie die Servervariable HTTP_HOST liest, sie mit dem Muster „localhost“ abgleicht und dann das Ergebnis negiert. Mit anderen Worten überprüft die Bedingung, dass der Host-Header nicht mit „localhost“ übereinstimmt.

<Aktionstyp="AbbruchAnfrage" />

Das obige Element weist das URL-Rewrite-Modul an, die HTTP-Anfrage zu beenden.

Testen von Zugriffssperrregeln

Um diese Regel zu testen, öffnen Sie einen Webbrowser und senden Sie eine Anfrage an http://127.0.0.1/article/234/some-title. Sie sollten sehen, dass der Browser keine Antwort vom Server erhält. Wenn Sie jedoch http://localhost/article/234/some-title anfordern, antwortet der Webserver erfolgreich.

Die ausgefallene Anzeige lautet wie folgt:

Der Erfolg wird wie folgt angezeigt:

Zusammenfassung

In dieser exemplarischen Vorgehensweise haben Sie gelernt, wie Sie URL-Umschreibregeln mithilfe des IIS-Managers oder durch manuelles Bearbeiten der Datei „Web.config“ konfigurieren. Die in dieser exemplarischen Vorgehensweise erstellten Regeln demonstrieren einige wichtige Funktionen des URL-Rewrite-Moduls, z. B. die Unterstützung regulärer Ausdrücke und die Möglichkeit, HTTP-Header und Servervariablen für Umschreibentscheidungen zu verwenden.

<<:  Implementierung von Check Constraints in MySQL 8.0

>>:  Vue implementiert den automatischen Sprung zur Anmeldeseite, wenn das Token abläuft

Artikel empfehlen

Detaillierte Erklärung der Sperrstruktur in MySQL

Mysql unterstützt 3 Arten von Sperrstrukturen Spe...

Detaillierte Erläuterung der Verwendung des DockerHub-Image-Repository

Bisher wurden die von uns verwendeten Images alle...

MySQL-Abfrage gibt an, dass das Feld keine Zahl und kein Komma SQL ist

Grundlegende SQL-Anweisungen MySQL-Abfrageanweisu...

Sekundäre Kapselung des Elements el-table table (mit Tischhöhenanpassung)

Vorwort Während meines Praktikums in der Firma ha...

C# implementiert MySQL-Befehlszeilensicherung und -wiederherstellung

Es gibt viele Tools zum Sichern von MySQL-Datenba...

MySQL-Indexprinzip und Analyse von Anwendungsbeispielen

Dieser Artikel veranschaulicht anhand von Beispie...

Detaillierte Erklärung der Datentypen in den JavaScript-Grundlagen

Inhaltsverzeichnis 1. Datentyp 1.1 Warum brauchen...

So installieren Sie ElasticSearch auf Docker in einem Artikel

Inhaltsverzeichnis Vorwort 1. Docker installieren...

Detaillierte Erklärung verschiedener Bildformate wie JPG, GIF und PNG

Jeder weiß, dass Bilder auf Webseiten im Allgemein...

MySQL extrahiert interne JSON-Felder und gibt sie als Zahlen aus.

Inhaltsverzeichnis Hintergrund Problemanalyse 1. ...