blob: 227abc16a05d10175c5c9258de111a5394a2c455 [file]
<!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&uuml;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> &gt; <a href="https://httpd.apache.org/">HTTP-Server</a> &gt; <a href="https://httpd.apache.org/docs/">Dokumentation</a> &gt; <a href="../">Version 2.5</a> &gt; <a href="./">Rewrite</a></div><div id="page-content"><div id="preamble"><h1>Einf&uuml;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&uuml;gbare Sprachen: </span><a href="../de/rewrite/intro.html" title="Deutsch">&nbsp;de&nbsp;</a> |
<a href="../en/rewrite/intro.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../es/rewrite/intro.html" hreflang="es" rel="alternate" title="Espa&ntilde;ol">&nbsp;es&nbsp;</a> |
<a href="../fr/rewrite/intro.html" hreflang="fr" rel="alternate" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a> |
<a href="../ja/rewrite/intro.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/rewrite/intro.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="../tr/rewrite/intro.html" hreflang="tr" rel="alternate" title="T&uuml;rk&ccedil;e">&nbsp;tr&nbsp;</a> |
<a href="../zh-cn/rewrite/intro.html" hreflang="zh-cn" rel="alternate" title="Simplified Chinese">&nbsp;zh-cn&nbsp;</a></p>
</div>
<div class="outofdate">Diese &Uuml;bersetzung ist m&ouml;glicherweise
nicht mehr aktuell. Bitte pr&uuml;fen Sie die englische Version auf
die neuesten &Auml;nderungen.</div>
<p>Dieses Dokument erg&auml;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&uuml;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&auml;nger den Einstieg
erleichtern.
</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif"> <a href="#introduction">Einf&uuml;hrung</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#regex">Regul&auml;re Ausdr&uuml;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&uuml;hrung <a title="Permanent link" href="#introduction" class="permalink">&para;</a></h2>
<p>Das Apache-Modul <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> ist ein sehr
leistungsf&auml;higes und ausgereiftes Modul, das eine M&ouml;glichkeit bietet,
URL-Manipulationen durchzuf&uuml;hren. Damit k&ouml;nnen Sie nahezu alle Arten von
URL-Umschreibungen durchf&uuml;hren, die Sie m&ouml;glicherweise ben&ouml;tigen. Es ist
jedoch etwas komplex und kann f&uuml;r Anf&auml;nger einsch&uuml;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&auml;ngige URL-Manipulationsaufgaben nicht
die volle Leistungsf&auml;higkeit und Komplexit&auml;t von <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
erfordern. F&uuml;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&szlig;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 &uuml;berw&auml;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&auml;re Ausdr&uuml;cke <a title="Permanent link" href="#regex" class="permalink">&para;</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&auml;ren Ausdr&uuml;cke</a>. In
diesem Dokument versuchen wir nicht, eine detaillierte Referenz zu
regul&auml;ren Ausdr&uuml;cken zu liefern. Daf&uuml;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&uuml;r regul&auml;re
Ausdr&uuml;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&auml;rer Ausdr&uuml;cke ist im Wesentlichen
unver&auml;ndert, und es bleibt die ma&szlig;gebliche Referenz zu diesem Thema).</p>
<p>In diesem Dokument versuchen wir, gen&uuml;gend Regex-Vokabular zu
vermitteln, um Ihnen den Einstieg zu erleichtern, ohne Sie zu
&uuml;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&ouml;rungen.</p>
<h3 id="regexvocab">Regex-Vokabular</h3>
<p>Die folgenden sind die minimalen Bausteine, die Sie ben&ouml;tigen, um
regul&auml;re Ausdr&uuml;cke und <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>s
zu schreiben. Sie stellen sicherlich kein vollst&auml;ndiges Vokabular f&uuml;r
regul&auml;re Ausdr&uuml;cke dar, aber sie sind ein guter Ausgangspunkt und sollten
Ihnen helfen, grundlegende regul&auml;re Ausdr&uuml;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 &uuml;berein</td>
<td><code>c.t</code> stimmt mit <code>cat</code>, <code>cot</code>,
<code>cut</code> usw. &uuml;berein</td>
</tr>
<tr>
<td><code>+</code></td>
<td>Wiederholt die vorherige &Uuml;bereinstimmung ein oder mehrmals</td>
<td><code>a+</code> stimmt mit <code>a</code>, <code>aa</code>,
<code>aaa</code> usw. &uuml;berein</td>
</tr>
<tr>
<td><code>*</code></td>
<td>Wiederholt die vorherige &Uuml;bereinstimmung null oder mehrmals</td>
<td><code>a*</code> stimmt mit allem &uuml;berein, womit auch <code>a+</code>
&uuml;bereinstimmt, aber auch mit einem leeren String</td>
</tr>
<tr>
<td><code>?</code></td>
<td>Macht die &Uuml;bereinstimmung optional</td>
<td><code>colou?r</code> stimmt mit <code>color</code> und
<code>colour</code> &uuml;berein</td>
</tr>
<tr>
<td><code>\</code></td>
<td>Maskiert das n&auml;chste Zeichen</td>
<td><code>\.</code> stimmt mit <code>.</code> (Punkt) &uuml;berein und nicht
mit <em>jedem einzelnen Zeichen</em>, wie oben erkl&auml;rt</td>
</tr>
<tr>
<td><code>^</code></td>
<td>Als Anker bezeichnet, stimmt mit dem Anfang des Strings &uuml;berein</td>
<td><code>^a</code> stimmt mit einem String &uuml;berein, der mit <code>a</code> beginnt</td>
</tr>
<tr>
<td><code>$</code></td>
<td>Der andere Anker, stimmt mit dem Ende des Strings &uuml;berein</td>
<td><code>a$</code> stimmt mit einem String &uuml;berein, der mit <code>a</code> endet</td>
</tr>
<tr>
<td><code>( )</code></td>
<td>Gruppiert mehrere Zeichen zu einer Einheit und erfasst eine
&Uuml;bereinstimmung zur Verwendung als R&uuml;ckreferenz</td>
<td><code>(ab)+</code> stimmt mit <code>ababab</code> &uuml;berein - das hei&szlig;t,
das <code>+</code> gilt f&uuml;r die Gruppe. F&uuml;r mehr zu R&uuml;ckreferenzen
siehe <a href="#InternalBackRefs">unten</a></td>
</tr>
<tr>
<td><code>[ ]</code></td>
<td>Eine Zeichenklasse - stimmt mit einem der Zeichen &uuml;berein</td>
<td><code>c[uoa]t</code> stimmt mit <code>cut</code>, <code>cot</code> oder
<code>cat</code> &uuml;berein</td>
</tr>
<tr>
<td><code>[^ ]</code></td>
<td>Negative Zeichenklasse - stimmt mit jedem nicht angegebenen Zeichen &uuml;berein</td>
<td><code>c[^/]t</code> stimmt mit <code>cat</code> oder <code>c=t</code> &uuml;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&auml;ren Ausdruck verwendet werden, um ihn zu negieren. Das hei&szlig;t,
ein String gilt nur dann als &uuml;bereinstimmend, wenn er nicht mit dem Rest
des Ausdrucks &uuml;bereinstimmt.</p>
<h3 id="InternalBackRefs">Verf&uuml;gbarkeit von Regex-R&uuml;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&uuml;ckreferenzen
erstellt, die mit den Strings <code>$N</code> und <code>%N</code>
(siehe unten) verwendet werden k&ouml;nnen. Diese stehen f&uuml;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&uuml;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&uuml;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&uuml;ckreferenzen zur
Expansion &uuml;bertragen werden und illustriert den Ablauf der
RewriteRule-/RewriteCond-Zuordnung. In den n&auml;chsten Kapiteln
werden wir erkunden, wie diese R&uuml;ckreferenzen verwendet werden,
also machen Sie sich keine Sorgen, wenn es Ihnen zun&auml;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&uuml;ckreferenz-Ablauf durch eine Regel.<br>
In diesem Beispiel w&uuml;rde eine Anfrage f&uuml;r <code>/test/1234</code> in <code>/admin.foo?page=test&amp;id=1234&amp;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">&para;</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 &uuml;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&auml;rer Ausdruck</a>.
Es wird anf&auml;nglich (f&uuml;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&uuml;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&auml;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,
&auml;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&uuml;rde diese Direktive
Anfragen f&uuml;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&uuml;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&auml;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&uuml;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&uuml;rde eine Anfrage f&uuml;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&uuml;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">&para;</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 &Uuml;bereinstimmungsverhalten einer Regel durch
die Anwendung des <code>[NC]</code>-Flags auf Gro&szlig;-/Kleinschreibung
unempfindlich gemacht werden:
</p>
<pre class="prettyprint lang-config">RewriteRule "^puppy.html" "smalldog.html" [NC]</pre>
<p>Weitere Details zu den verf&uuml;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">&para;</a></h2>
<p>Eine oder mehrere <code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code>-Direktiven
k&ouml;nnen verwendet werden, um die Typen von Anfragen einzuschr&auml;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&auml;rer
Ausdruck</a>, der mit der Variable &uuml;bereinstimmen muss, und ein optionales
drittes Argument ist eine Liste von Flags, die die Art der Auswertung
der &Uuml;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&ouml;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&uuml;ssen alle &uuml;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&ouml;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 &Uuml;bereinstimmung
angibt, sodass die Regel nur angewendet wird, wenn das Cookie nicht "go"
enth&auml;lt.</p>
<p>&Uuml;bereinstimmungen in den regul&auml;ren Ausdr&uuml;cken der
<code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code>s k&ouml;nnen als Teil
der <var>Substitution</var> in der
<code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> &uuml;ber die Variablen
<code>%1</code>, <code>%2</code> usw. verwendet werden. Beispielsweise
leitet Folgendes die Anfrage abh&auml;ngig vom f&uuml;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&uuml;r <code>http://example.com/foo/bar</code> war,
dann enth&auml;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">&para;</a></h2>
<p>Die <code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code>-Direktive
bietet eine M&ouml;glichkeit, sozusagen eine externe Funktion aufzurufen,
um Ihre Umschreibung durchzuf&uuml;hren. Dies wird im
<a href="rewritemap.html">erg&auml;nzenden RewriteMap-Dokument</a>
ausf&uuml;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">&para;</a></h2>
<p>Umschreibungen werden typischerweise in der Hauptserverkonfiguration
(au&szlig;erhalb eines <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>-Abschnitts)
oder innerhalb von <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>-Containern
konfiguriert. Dies ist die einfachste Art, Umschreibungen durchzuf&uuml;hren,
und wird empfohlen. Es ist jedoch m&ouml;glich, Umschreibungen innerhalb von
<code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>-Abschnitten
oder <a href="../howto/htaccess.html"><code>.htaccess</code>-Dateien</a>
auf Kosten zus&auml;tzlicher Komplexit&auml;t durchzuf&uuml;hren. Diese Technik wird
als verzeichnisbasierte Umschreibung bezeichnet.</p>
<p>Der Hauptunterschied zu serverweiten Umschreibungen besteht darin, dass
der Pfadpr&auml;fix des Verzeichnisses, das die <code>.htaccess</code>-Datei
enth&auml;lt, vor dem Abgleich in der <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>
entfernt wird. Zus&auml;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&uuml;gbare Sprachen: </span><a href="../de/rewrite/intro.html" title="Deutsch">&nbsp;de&nbsp;</a> |
<a href="../en/rewrite/intro.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../es/rewrite/intro.html" hreflang="es" rel="alternate" title="Espa&ntilde;ol">&nbsp;es&nbsp;</a> |
<a href="../fr/rewrite/intro.html" hreflang="fr" rel="alternate" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a> |
<a href="../ja/rewrite/intro.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/rewrite/intro.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="../tr/rewrite/intro.html" hreflang="tr" rel="alternate" title="T&uuml;rk&ccedil;e">&nbsp;tr&nbsp;</a> |
<a href="../zh-cn/rewrite/intro.html" hreflang="zh-cn" rel="alternate" title="Simplified Chinese">&nbsp;zh-cn&nbsp;</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 = '&#9776;';
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>