| <!DOCTYPE html SYSTEM "about:legacy-compat"> |
| <html lang="de"><head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> |
| <meta content="width=device-width, initial-scale=1" name="viewport"> |
| <!-- |
| XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |
| This file is generated from xml source: DO NOT EDIT |
| XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |
| --> |
| <title>Einführung in Apache mod_rewrite - Apache HTTP Server Version 2.5</title> |
| <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet"> |
| <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size"> |
| <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css"><link rel="stylesheet" type="text/css" href="../style/css/prettify.css"> |
| <script src="../style/scripts/prettify.min.js"> |
| </script> |
| |
| <link href="../images/favicon.png" rel="shortcut icon"></head> |
| <body id="manual-page"><div id="page-header"> |
| <p class="menu"><a href="../mod/">Module</a> | <a href="../mod/quickreference.html">Direktiven</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossar</a> | <a href="../sitemap.html">Seitenindex</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Report a bug</a></p> |
| <p class="apache">Apache HTTP Server Version 2.5</p> |
| <img alt="" src="../images/feather.png"></div> |
| <div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif"></a></div> |
| <div id="path"> |
| <a href="https://www.apache.org/">Apache</a> > <a href="https://httpd.apache.org/">HTTP-Server</a> > <a href="https://httpd.apache.org/docs/">Dokumentation</a> > <a href="../">Version 2.5</a> > <a href="./">Rewrite</a></div><div id="page-content"><div id="preamble"><h1>Einführung in Apache mod_rewrite</h1> |
| <button aria-label="Toggle language list" class="lang-toggle"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" stroke="currentColor" fill="none" viewBox="0 0 24 24" height="16" width="16"><circle r="10" cy="12" cx="12"/><line y2="12" x2="22" y1="12" x1="2"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg></button> |
| <div class="toplang"> |
| <p><span>Verfügbare Sprachen: </span><a href="../de/rewrite/intro.html" title="Deutsch"> de </a> | |
| <a href="../en/rewrite/intro.html" hreflang="en" rel="alternate" title="English"> en </a> | |
| <a href="../es/rewrite/intro.html" hreflang="es" rel="alternate" title="Español"> es </a> | |
| <a href="../fr/rewrite/intro.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | |
| <a href="../ja/rewrite/intro.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | |
| <a href="../ko/rewrite/intro.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | |
| <a href="../tr/rewrite/intro.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a> | |
| <a href="../zh-cn/rewrite/intro.html" hreflang="zh-cn" rel="alternate" title="Simplified Chinese"> zh-cn </a></p> |
| </div> |
| <div class="outofdate">Diese Übersetzung ist möglicherweise |
| nicht mehr aktuell. Bitte prüfen Sie die englische Version auf |
| die neuesten Änderungen.</div> |
| |
| <p>Dieses Dokument ergänzt die <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> |
| <a href="../mod/mod_rewrite.html">Referenzdokumentation</a>. Es |
| beschreibt die grundlegenden Konzepte, die für die Verwendung von |
| <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> notwendig sind. Andere Dokumente gehen |
| mehr ins Detail, aber dieses Dokument soll dem Anfänger den Einstieg |
| erleichtern. |
| </p> |
| </div> |
| <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif"> <a href="#introduction">Einführung</a></li> |
| <li><img alt="" src="../images/down.gif"> <a href="#regex">Reguläre Ausdrücke</a></li> |
| <li><img alt="" src="../images/down.gif"> <a href="#rewriterule">RewriteRule-Grundlagen</a></li> |
| <li><img alt="" src="../images/down.gif"> <a href="#flags">Umschreibungs-Flags</a></li> |
| <li><img alt="" src="../images/down.gif"> <a href="#rewritecond">Umschreibungsbedingungen</a></li> |
| <li><img alt="" src="../images/down.gif"> <a href="#rewritemap">Umschreibungs-Maps</a></li> |
| <li><img alt="" src="../images/down.gif"> <a href="#htaccess">.htaccess-Dateien</a></li> |
| </ul><h3>Siehe auch</h3><ul class="seealso"><li><a href="../mod/mod_rewrite.html">Moduldokumentation</a></li><li><a href="remapping.html">Umleitung und Neuzuordnung</a></li><li><a href="access.html">Zugriffskontrolle</a></li><li><a href="vhosts.html">Virtuelle Hosts</a></li><li><a href="proxy.html">Proxying</a></li><li><a href="rewritemap.html">Verwendung von RewriteMap</a></li><li><a href="advanced.html">Fortgeschrittene Techniken</a></li><li><a href="avoid.html">Wann man mod_rewrite nicht verwenden sollte</a></li></ul></div> |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="section"> |
| <h2 id="introduction">Einführung <a title="Permanent link" href="#introduction" class="permalink">¶</a></h2> |
| <p>Das Apache-Modul <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> ist ein sehr |
| leistungsfähiges und ausgereiftes Modul, das eine Möglichkeit bietet, |
| URL-Manipulationen durchzuführen. Damit können Sie nahezu alle Arten von |
| URL-Umschreibungen durchführen, die Sie möglicherweise benötigen. Es ist |
| jedoch etwas komplex und kann für Anfänger einschüchternd sein. Es besteht |
| auch die Tendenz, Umschreibungsregeln als magische Formeln zu behandeln |
| und sie zu verwenden, ohne wirklich zu verstehen, was sie tun.</p> |
| |
| <p>Dieses Dokument versucht, ausreichend Hintergrundwissen zu vermitteln, |
| damit das Folgende verstanden und nicht nur blind kopiert wird. |
| </p> |
| |
| <p>Denken Sie daran, dass viele gängige URL-Manipulationsaufgaben nicht |
| die volle Leistungsfähigkeit und Komplexität von <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> |
| erfordern. Für einfache Aufgaben siehe <code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code> und die |
| Dokumentation zur <a href="../urlmapping.html">Zuordnung von URLs zum |
| Dateisystem</a>.</p> |
| |
| <p>Stellen Sie schließlich vor dem Fortfahren sicher, dass Sie die |
| Protokollebene von <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> mit der |
| <code class="directive"><a href="../mod/core.html#loglevel">LogLevel</a></code>-Direktive auf eine der |
| Trace-Ebenen konfigurieren. Obwohl dies eine überwältigende Menge an |
| Informationen liefern kann, ist es unverzichtbar bei der Fehlersuche in |
| der <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>-Konfiguration, da es Ihnen genau zeigt, |
| wie jede Regel verarbeitet wird.</p> |
| |
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="section"> |
| <h2 id="regex">Reguläre Ausdrücke <a title="Permanent link" href="#regex" class="permalink">¶</a></h2> |
| |
| <p><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> verwendet das Vokabular der <a href="http://pcre.org/">Perl-kompatiblen regulären Ausdrücke</a>. In |
| diesem Dokument versuchen wir nicht, eine detaillierte Referenz zu |
| regulären Ausdrücken zu liefern. Dafür empfehlen wir die <a href="http://pcre.org/pcre.txt">PCRE-Manpages</a>, die <a href="http://perldoc.perl.org/perlre.html">Perl-Manpage für reguläre |
| Ausdrücke</a> und <a href="https://www.oreilly.com/library/view/mastering-regular-expressions/0596528124/">Mastering |
| Regular Expressions von Jeffrey Friedl</a> (die dritte Auflage stammt |
| von 2006, aber die Syntax regulärer Ausdrücke ist im Wesentlichen |
| unverändert, und es bleibt die maßgebliche Referenz zu diesem Thema).</p> |
| |
| <p>In diesem Dokument versuchen wir, genügend Regex-Vokabular zu |
| vermitteln, um Ihnen den Einstieg zu erleichtern, ohne Sie zu |
| überfordern, in der Hoffnung, dass <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>s wissenschaftliche Formeln sind und keine |
| magischen Beschwörungen.</p> |
| |
| <h3 id="regexvocab">Regex-Vokabular</h3> |
| |
| <p>Die folgenden sind die minimalen Bausteine, die Sie benötigen, um |
| reguläre Ausdrücke und <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>s |
| zu schreiben. Sie stellen sicherlich kein vollständiges Vokabular für |
| reguläre Ausdrücke dar, aber sie sind ein guter Ausgangspunkt und sollten |
| Ihnen helfen, grundlegende reguläre Ausdrücke zu lesen und eigene zu |
| schreiben.</p> |
| |
| <table> |
| <tr> |
| <th>Zeichen</th> |
| <th>Bedeutung</th> |
| <th>Beispiel</th> |
| </tr> |
| |
| <tr> |
| <td><code>.</code></td> |
| <td>Stimmt mit jedem einzelnen Zeichen überein</td> |
| <td><code>c.t</code> stimmt mit <code>cat</code>, <code>cot</code>, |
| <code>cut</code> usw. überein</td> |
| </tr> |
| <tr> |
| <td><code>+</code></td> |
| <td>Wiederholt die vorherige Übereinstimmung ein oder mehrmals</td> |
| <td><code>a+</code> stimmt mit <code>a</code>, <code>aa</code>, |
| <code>aaa</code> usw. überein</td> |
| </tr> |
| <tr> |
| <td><code>*</code></td> |
| <td>Wiederholt die vorherige Übereinstimmung null oder mehrmals</td> |
| <td><code>a*</code> stimmt mit allem überein, womit auch <code>a+</code> |
| übereinstimmt, aber auch mit einem leeren String</td> |
| </tr> |
| <tr> |
| <td><code>?</code></td> |
| <td>Macht die Übereinstimmung optional</td> |
| <td><code>colou?r</code> stimmt mit <code>color</code> und |
| <code>colour</code> überein</td> |
| </tr> |
| <tr> |
| <td><code>\</code></td> |
| <td>Maskiert das nächste Zeichen</td> |
| <td><code>\.</code> stimmt mit <code>.</code> (Punkt) überein und nicht |
| mit <em>jedem einzelnen Zeichen</em>, wie oben erklärt</td> |
| </tr> |
| <tr> |
| <td><code>^</code></td> |
| <td>Als Anker bezeichnet, stimmt mit dem Anfang des Strings überein</td> |
| <td><code>^a</code> stimmt mit einem String überein, der mit <code>a</code> beginnt</td> |
| </tr> |
| <tr> |
| <td><code>$</code></td> |
| <td>Der andere Anker, stimmt mit dem Ende des Strings überein</td> |
| <td><code>a$</code> stimmt mit einem String überein, der mit <code>a</code> endet</td> |
| </tr> |
| <tr> |
| <td><code>( )</code></td> |
| <td>Gruppiert mehrere Zeichen zu einer Einheit und erfasst eine |
| Übereinstimmung zur Verwendung als Rückreferenz</td> |
| <td><code>(ab)+</code> stimmt mit <code>ababab</code> überein - das heißt, |
| das <code>+</code> gilt für die Gruppe. Für mehr zu Rückreferenzen |
| siehe <a href="#InternalBackRefs">unten</a></td> |
| </tr> |
| <tr> |
| <td><code>[ ]</code></td> |
| <td>Eine Zeichenklasse - stimmt mit einem der Zeichen überein</td> |
| <td><code>c[uoa]t</code> stimmt mit <code>cut</code>, <code>cot</code> oder |
| <code>cat</code> überein</td> |
| </tr> |
| <tr> |
| <td><code>[^ ]</code></td> |
| <td>Negative Zeichenklasse - stimmt mit jedem nicht angegebenen Zeichen überein</td> |
| <td><code>c[^/]t</code> stimmt mit <code>cat</code> oder <code>c=t</code> überein, |
| aber nicht mit <code>c/t</code></td></tr> |
| </table> |
| |
| <p>In <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> kann das Zeichen <code>!</code> vor |
| einem regulären Ausdruck verwendet werden, um ihn zu negieren. Das heißt, |
| ein String gilt nur dann als übereinstimmend, wenn er nicht mit dem Rest |
| des Ausdrucks übereinstimmt.</p> |
| |
| |
| |
| <h3 id="InternalBackRefs">Verfügbarkeit von Regex-Rückreferenzen</h3> |
| |
| <p>Hier ist eine wichtige Sache zu beachten: Wann immer Sie |
| Klammern in <em>Pattern</em> oder in einem der |
| <em>CondPattern</em> verwenden, werden intern Rückreferenzen |
| erstellt, die mit den Strings <code>$N</code> und <code>%N</code> |
| (siehe unten) verwendet werden können. Diese stehen für die |
| Erstellung des <em>Substitution</em>-Parameters einer |
| <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> oder des |
| <em>TestString</em>-Parameters einer |
| <code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code> zur Verfügung.</p> |
| <p>Erfassungen in den <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>-Mustern stehen (kontraintuitiv) allen |
| vorhergehenden <code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code>-Direktiven |
| zur Verfügung, da der <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>-Ausdruck |
| vor den einzelnen Bedingungen ausgewertet wird.</p> |
| |
| <p>Abbildung 1 zeigt, an welche Stellen die Rückreferenzen zur |
| Expansion übertragen werden und illustriert den Ablauf der |
| RewriteRule-/RewriteCond-Zuordnung. In den nächsten Kapiteln |
| werden wir erkunden, wie diese Rückreferenzen verwendet werden, |
| also machen Sie sich keine Sorgen, wenn es Ihnen zunächst etwas |
| fremd erscheint. |
| </p> |
| |
| <p class="figure"> |
| <img src="../images/rewrite_backreferences.png" alt="Ablauf der RewriteRule- und RewriteCond-Zuordnung"><br> |
| <dfn>Abbildung 1:</dfn> Der Rückreferenz-Ablauf durch eine Regel.<br> |
| In diesem Beispiel würde eine Anfrage für <code>/test/1234</code> in <code>/admin.foo?page=test&id=1234&host=admin.example.com</code> umgewandelt. |
| </p> |
| |
| |
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="section"> |
| <h2 id="rewriterule">RewriteRule-Grundlagen <a title="Permanent link" href="#rewriterule" class="permalink">¶</a></h2> |
| <p>Eine <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> besteht |
| aus drei durch Leerzeichen getrennten Argumenten. Die Argumente sind:</p> |
| <ol> |
| <li><var>Pattern</var>: welche eingehenden URLs von der Regel betroffen sein sollen;</li> |
| <li><var>Substitution</var>: wohin die übereinstimmenden Anfragen gesendet werden sollen;</li> |
| <li><var>[flags]</var>: Optionen, die die umgeschriebene Anfrage beeinflussen.</li> |
| </ol> |
| |
| <p>Das <var>Pattern</var> ist ein <a href="#regex">regulärer Ausdruck</a>. |
| Es wird anfänglich (für die erste Umschreibungsregel oder bis eine Ersetzung |
| erfolgt) gegen den URL-Pfad der eingehenden Anfrage abgeglichen (der Teil |
| nach dem Hostnamen, aber vor einem Fragezeichen, das den Beginn eines |
| Query-Strings anzeigt) oder im Verzeichniskontext gegen den Pfad der |
| Anfrage relativ zum Verzeichnis, für das die Regel definiert ist. Sobald |
| eine Ersetzung erfolgt ist, werden die folgenden Regeln gegen den |
| ersetzten Wert abgeglichen. |
| </p> |
| |
| <p class="figure"> |
| <img src="../images/syntax_rewriterule.png" alt="Syntax der RewriteRule-Direktive"><br> |
| <dfn>Abbildung 2:</dfn> Syntax der RewriteRule-Direktive. |
| </p> |
| |
| <p>Die <var>Substitution</var> kann selbst eines von drei Dingen sein:</p> |
| |
| <dl> |
| <dt>1. Ein vollständiger Dateisystempfad zu einer Ressource</dt> |
| <dd> |
| <pre class="prettyprint lang-config">RewriteRule "^/games" "/usr/local/games/web/puzzles.html"</pre> |
| |
| <p>Dies bildet eine Anfrage auf einen beliebigen Ort in Ihrem Dateisystem ab, |
| ähnlich wie die <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>-Direktive.</p> |
| </dd> |
| |
| <dt>2. Ein Web-Pfad zu einer Ressource</dt> |
| <dd> |
| <pre class="prettyprint lang-config">RewriteRule "^/games$" "/puzzles.html"</pre> |
| |
| <p>Wenn <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> auf |
| <code>/usr/local/apache2/htdocs</code> gesetzt ist, würde diese Direktive |
| Anfragen für <code>http://example.com/games</code> auf den Pfad |
| <code>/usr/local/apache2/htdocs/puzzles.html</code> abbilden.</p> |
| |
| </dd> |
| |
| <dt>3. Eine absolute URL</dt> |
| <dd> |
| <pre class="prettyprint lang-config">RewriteRule "^/product/view$" "http://site2.example.com/seeproduct.html" [R]</pre> |
| |
| <p>Dies weist den Client an, eine neue Anfrage für die angegebene URL zu |
| stellen.</p> |
| </dd> |
| </dl> |
| |
| <div class="warning">Beachten Sie, dass <strong>1</strong> und <strong>2</strong> exakt dieselbe Syntax haben. Der Unterschied besteht darin, dass bei <strong>1</strong> die oberste Ebene des Zielpfads (d.h. <code>/usr/</code>) im Dateisystem existiert, während dies bei <strong>2</strong> nicht der Fall ist (d.h. es gibt kein <code>/bar/</code> als Verzeichnis auf der obersten Ebene im Dateisystem).</div> |
| |
| <p>Die <var>Substitution</var> kann auch |
| <em>Rückreferenzen</em> auf Teile des eingehenden URL-Pfads enthalten, |
| die vom <var>Pattern</var> erfasst wurden. Betrachten Sie Folgendes:</p> |
| <pre class="prettyprint lang-config">RewriteRule "^/product/(.*)/view$" "/var/web/productdb/$1"</pre> |
| |
| <p>Die Variable <code>$1</code> wird durch den Text ersetzt, der vom |
| Ausdruck innerhalb der Klammern im <var>Pattern</var> erfasst wurde. |
| Beispielsweise würde eine Anfrage für |
| <code>http://example.com/product/r14df/view</code> auf den Pfad |
| <code>/var/web/productdb/r14df</code> abgebildet.</p> |
| |
| <p>Wenn mehr als ein Ausdruck in Klammern vorhanden ist, stehen sie |
| in der Reihenfolge in den Variablen <code>$1</code>, <code>$2</code>, |
| <code>$3</code> usw. zur Verfügung.</p> |
| |
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="section"> |
| <h2 id="flags">Umschreibungs-Flags <a title="Permanent link" href="#flags" class="permalink">¶</a></h2> |
| <p>Das Verhalten einer <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> kann durch die Anwendung |
| eines oder mehrerer Flags am Ende der Regel modifiziert werden. |
| Beispielsweise kann das Übereinstimmungsverhalten einer Regel durch |
| die Anwendung des <code>[NC]</code>-Flags auf Groß-/Kleinschreibung |
| unempfindlich gemacht werden: |
| </p> |
| <pre class="prettyprint lang-config">RewriteRule "^puppy.html" "smalldog.html" [NC]</pre> |
| |
| |
| <p>Weitere Details zu den verfügbaren Flags, ihren Bedeutungen und |
| Beispiele finden Sie im Dokument <a href="flags.html">Umschreibungs-Flags</a>.</p> |
| |
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="section"> |
| <h2 id="rewritecond">Umschreibungsbedingungen <a title="Permanent link" href="#rewritecond" class="permalink">¶</a></h2> |
| <p>Eine oder mehrere <code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code>-Direktiven |
| können verwendet werden, um die Typen von Anfragen einzuschränken, die der |
| nachfolgenden <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> |
| unterliegen. Das erste Argument ist eine Variable, die eine Eigenschaft |
| der Anfrage beschreibt, das zweite Argument ist ein <a href="#regex">regulärer |
| Ausdruck</a>, der mit der Variable übereinstimmen muss, und ein optionales |
| drittes Argument ist eine Liste von Flags, die die Art der Auswertung |
| der Übereinstimmung modifizieren.</p> |
| |
| <p class="figure"> |
| <img src="../images/syntax_rewritecond.png" alt="Syntax der RewriteCond-Direktive"><br> |
| <dfn>Abbildung 3:</dfn> Syntax der RewriteCond-Direktive |
| </p> |
| |
| <p>Um beispielsweise alle Anfragen von einem bestimmten IP-Bereich an |
| einen anderen Server zu senden, könnten Sie Folgendes verwenden:</p> |
| <pre class="prettyprint lang-config">RewriteCond "%{REMOTE_ADDR}" "^10\.2\." |
| RewriteRule "(.*)" "http://intranet.example.com$1"</pre> |
| |
| |
| <p>Wenn mehr als eine <code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code> |
| angegeben wird, müssen alle übereinstimmen, damit die |
| <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> angewendet wird. |
| Um beispielsweise Anfragen abzulehnen, die das Wort "hack" in ihrem |
| Query-String enthalten, es sei denn, sie enthalten auch ein Cookie mit |
| dem Wort "go", könnten Sie Folgendes verwenden:</p> |
| <pre class="prettyprint lang-config">RewriteCond "%{QUERY_STRING}" "hack" |
| RewriteCond "%{HTTP_COOKIE}" !go |
| RewriteRule "." "-" [F]</pre> |
| |
| <p>Beachten Sie, dass das Ausrufezeichen eine negative Übereinstimmung |
| angibt, sodass die Regel nur angewendet wird, wenn das Cookie nicht "go" |
| enthält.</p> |
| |
| <p>Übereinstimmungen in den regulären Ausdrücken der |
| <code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code>s können als Teil |
| der <var>Substitution</var> in der |
| <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> über die Variablen |
| <code>%1</code>, <code>%2</code> usw. verwendet werden. Beispielsweise |
| leitet Folgendes die Anfrage abhängig vom für den Zugriff auf die Website |
| verwendeten Hostnamen in ein anderes Verzeichnis:</p> |
| <pre class="prettyprint lang-config">RewriteCond "%{HTTP_HOST}" "(.*)" |
| RewriteRule "^/(.*)" "/sites/%1/$1"</pre> |
| |
| <p>Wenn die Anfrage für <code>http://example.com/foo/bar</code> war, |
| dann enthält <code>%1</code> den Wert <code>example.com</code> und |
| <code>$1</code> den Wert <code>foo/bar</code>.</p> |
| |
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="section"> |
| <h2 id="rewritemap">Umschreibungs-Maps <a title="Permanent link" href="#rewritemap" class="permalink">¶</a></h2> |
| |
| <p>Die <code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code>-Direktive |
| bietet eine Möglichkeit, sozusagen eine externe Funktion aufzurufen, |
| um Ihre Umschreibung durchzuführen. Dies wird im |
| <a href="rewritemap.html">ergänzenden RewriteMap-Dokument</a> |
| ausführlicher besprochen.</p> |
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="section"> |
| <h2 id="htaccess">.htaccess-Dateien <a title="Permanent link" href="#htaccess" class="permalink">¶</a></h2> |
| |
| <p>Umschreibungen werden typischerweise in der Hauptserverkonfiguration |
| (außerhalb eines <code class="directive"><a href="../mod/core.html#directory"><Directory></a></code>-Abschnitts) |
| oder innerhalb von <code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code>-Containern |
| konfiguriert. Dies ist die einfachste Art, Umschreibungen durchzuführen, |
| und wird empfohlen. Es ist jedoch möglich, Umschreibungen innerhalb von |
| <code class="directive"><a href="../mod/core.html#directory"><Directory></a></code>-Abschnitten |
| oder <a href="../howto/htaccess.html"><code>.htaccess</code>-Dateien</a> |
| auf Kosten zusätzlicher Komplexität durchzuführen. Diese Technik wird |
| als verzeichnisbasierte Umschreibung bezeichnet.</p> |
| |
| <p>Der Hauptunterschied zu serverweiten Umschreibungen besteht darin, dass |
| der Pfadpräfix des Verzeichnisses, das die <code>.htaccess</code>-Datei |
| enthält, vor dem Abgleich in der <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> |
| entfernt wird. Zusätzlich sollte <code class="directive"><a href="../mod/mod_rewrite.html#rewritebase">RewriteBase</a></code> |
| verwendet werden, um sicherzustellen, dass die Anfrage korrekt zugeordnet wird.</p> |
| |
| </div></div> |
| <div class="bottomlang"> |
| <p><span>Verfügbare Sprachen: </span><a href="../de/rewrite/intro.html" title="Deutsch"> de </a> | |
| <a href="../en/rewrite/intro.html" hreflang="en" rel="alternate" title="English"> en </a> | |
| <a href="../es/rewrite/intro.html" hreflang="es" rel="alternate" title="Español"> es </a> | |
| <a href="../fr/rewrite/intro.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | |
| <a href="../ja/rewrite/intro.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | |
| <a href="../ko/rewrite/intro.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | |
| <a href="../tr/rewrite/intro.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a> | |
| <a href="../zh-cn/rewrite/intro.html" hreflang="zh-cn" rel="alternate" title="Simplified Chinese"> zh-cn </a></p> |
| </div><div id="footer"> |
| <p class="apache">Copyright 2026 The Apache Software Foundation.<br>Lizenziert unter der <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> |
| <p class="menu"><a href="../mod/">Module</a> | <a href="../mod/quickreference.html">Direktiven</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossar</a> | <a href="../sitemap.html">Seitenindex</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Report a bug</a></p></div><script><!--//--><![CDATA[//><!-- |
| if (typeof(prettyPrint) !== 'undefined') { |
| prettyPrint(); |
| } |
| var langToggle = document.querySelector('.lang-toggle'); |
| var topLang = document.querySelector('.toplang'); |
| if (langToggle && topLang) { |
| langToggle.addEventListener('click', function() { topLang.classList.toggle('open'); }); |
| } |
| var qv = document.getElementById('quickview'); |
| if (qv) { |
| document.body.appendChild(qv); |
| var qvBtn = document.createElement('button'); |
| qvBtn.className = 'qv-toggle'; |
| qvBtn.setAttribute('aria-label', 'Toggle page navigation'); |
| qvBtn.innerHTML = '☰'; |
| document.body.appendChild(qvBtn); |
| qvBtn.addEventListener('click', function() { |
| var isOpen = qv.classList.toggle('open'); |
| if (isOpen) { |
| qv.style.top = window.scrollY + 10 + 'px'; |
| } |
| }); |
| window.addEventListener('scroll', function() { qv.classList.remove('open'); }); |
| } |
| //--><!]]></script> |
| </body></html> |