From: Rich Bowen Date: Tue, 28 Apr 2026 17:46:52 +0000 (+0000) Subject: Adds all new translations X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fbd975d3e7bcaf2ea0be994ad8eb6a616d600c58;p=thirdparty%2Fapache%2Fhttpd.git Adds all new translations git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1933443 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/docs/manual/rewrite/access.html b/docs/manual/rewrite/access.html index 6ab665d95c..314e3f2054 100644 --- a/docs/manual/rewrite/access.html +++ b/docs/manual/rewrite/access.html @@ -1,9 +1,33 @@ # GENERATED FROM XML -- DO NOT EDIT +URI: access.html.de +Content-Language: de +Content-type: text/html; charset=ISO-8859-1 + URI: access.html.en.utf8 Content-Language: en Content-type: text/html; charset=UTF-8 +URI: access.html.es.utf8 +Content-Language: es +Content-type: text/html; charset=UTF-8 + URI: access.html.fr.utf8 Content-Language: fr Content-type: text/html; charset=UTF-8 + +URI: access.html.ja.utf8 +Content-Language: ja +Content-type: text/html; charset=UTF-8 + +URI: access.html.ko.euc-kr +Content-Language: ko +Content-type: text/html; charset=EUC-KR + +URI: access.html.tr.utf8 +Content-Language: tr +Content-type: text/html; charset=UTF-8 + +URI: access.html.zh-cn.utf8 +Content-Language: zh-cn +Content-type: text/html; charset=UTF-8 diff --git a/docs/manual/rewrite/access.html.de b/docs/manual/rewrite/access.html.de new file mode 100644 index 0000000000..af9456379a --- /dev/null +++ b/docs/manual/rewrite/access.html.de @@ -0,0 +1,318 @@ + + + + + +Zugriffskontrolle mit mod_rewrite - Apache HTTP Server Version 2.5 + + + + + + + +
<-
+
+Apache > HTTP-Server > Dokumentation > Version 2.5 > Rewrite

Zugriffskontrolle mit mod_rewrite

+
+

Verfügbare Sprachen:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ + +

Dieses Dokument ergänzt die mod_rewrite +Referenzdokumentation. Es beschreibt, +wie Sie mod_rewrite zur Zugriffskontrolle auf +verschiedene Ressourcen verwenden können, sowie weitere verwandte Techniken. +Dies beinhaltet viele Beispiele für gängige Verwendungen von mod_rewrite, +einschließlich detaillierter Beschreibungen, wie jedes einzelne funktioniert.

+ +
Beachten Sie, dass viele dieser Beispiele nicht unverändert in Ihrer +speziellen Serverkonfiguration funktionieren werden. Es ist daher wichtig, dass Sie +sie verstehen, anstatt die Beispiele einfach auszuschneiden und in Ihre +Konfiguration einzufügen.
+ +
+ +
top
+
+

Verhindern von Bild-"Hotlinking"

+ + + +
+
Beschreibung:
+ +
+

Die folgende Technik verhindert die Praxis, dass andere Websites + Ihre Bilder direkt in ihre Seiten einbinden. Diese Praxis wird + oft als "Hotlinking" bezeichnet und führt dazu, + dass Ihre Bandbreite verwendet wird, um Inhalte für die Website + einer anderen Person bereitzustellen.

+
+ +
Lösung:
+ +
+

Diese Technik beruht auf dem Wert der + HTTP_REFERER-Variable, die optional ist. Daher + ist es möglich, dass einige Personen diese Einschränkung + umgehen. Die meisten Benutzer werden jedoch die fehlgeschlagene + Anfrage bemerken, was im Laufe der Zeit dazu führen sollte, + dass das Bild von der anderen Website entfernt wird.

+

Es gibt mehrere Möglichkeiten, mit dieser Situation + umzugehen.

+ +

Im ersten Beispiel verweigern wir die Anfrage einfach, wenn sie nicht + von einer Seite unserer Website stammt. Für dieses Beispiel nehmen wir + an, dass unsere Website www.example.com ist.

+ + + +
RewriteCond "%{HTTP_REFERER}"  "!^$"
+RewriteCond "%{HTTP_REFERER}"  "!www.example.com" [NC]
+RewriteRule "\.(gif|jpg|png)$" "-"                [F,NC]
+ + +

Im zweiten Beispiel zeigen wir statt einer fehlgeschlagenen Anfrage + ein alternatives Bild an.

+ +
RewriteCond "%{HTTP_REFERER}"  "!^$"
+RewriteCond "%{HTTP_REFERER}"  "!www.example.com"      [NC]
+RewriteRule "\.(gif|jpg|png)$" "/images/go-away.png"   [R,NC]
+ + +

Im dritten Beispiel leiten wir die Anfrage auf ein Bild auf einer + anderen Website um.

+ +
RewriteCond "%{HTTP_REFERER}"  "!^$"
+RewriteCond "%{HTTP_REFERER}"  "!www.example.com"                    [NC]
+RewriteRule "\.(gif|jpg|png)$" "http://other.example.com/image.gif"  [R,NC]
+ + +

Von diesen Techniken sind die letzten beiden am effektivsten, + um Personen davon abzuhalten, Ihre Bilder per Hotlink einzubinden, + da sie einfach nicht das Bild sehen werden, das sie erwartet haben.

+ +
+ +
Diskussion:
+ +
+

Wenn Sie lediglich den Zugriff auf die Ressource verweigern möchten, + anstatt die Anfrage woanders umzuleiten, kann dies ohne die + Verwendung von mod_rewrite erreicht werden:

+ +
SetEnvIf Referer example\.com localreferer
+<FilesMatch "\.(jpg|png|gif)$">
+    Require env localreferer
+</FilesMatch>
+ +
+
+ +
top
+
+

Blockieren von Robots

+ + + +
+
Beschreibung:
+ +
+

+ In diesem Rezept besprechen wir, wie man hartnäckige Anfragen von + einem bestimmten Robot oder User-Agent blockiert.

+ +

Der Standard für den Ausschluss von Robots definiert eine Datei, + /robots.txt, die die Bereiche Ihrer Website festlegt, + von denen Sie Robots ausschließen möchten. Einige Robots halten sich + jedoch nicht an diese Dateien. +

+ +

Beachten Sie, dass es Methoden gibt, dies ohne die Verwendung + von mod_rewrite zu erreichen. Beachten Sie auch, dass jede Technik, die auf + dem USER_AGENT-String des Clients basiert, sehr leicht + umgangen werden kann, da dieser String geändert werden kann.

+
+ +
Lösung:
+ +
+

Wir verwenden einen Regelsatz, der das zu schützende Verzeichnis + und den Client-USER_AGENT angibt, der den bösartigen + oder hartnäckigen Robot identifiziert.

+ +

In diesem Beispiel blockieren wir einen Robot namens + NameOfBadRobot vom Standort + /secret/files. Sie können auch einen IP-Adressbereich + angeben, wenn Sie den User-Agent nur von einer bestimmten Quelle + blockieren möchten.

+ +
RewriteCond "%{HTTP_USER_AGENT}"   "^NameOfBadRobot"
+RewriteCond "%{REMOTE_ADDR}"       "=123\.45\.67\.[8-9]"
+RewriteRule "^/secret/files/"      "-"                   [F]
+ +
+ +
Diskussion:
+ +
+

+ Anstatt mod_rewrite hierfür zu verwenden, können Sie dasselbe + Ziel mit alternativen Mitteln erreichen, wie hier gezeigt: +

+
SetEnvIfNoCase User-Agent ^NameOfBadRobot goaway
+<Location "/secret/files">
+    <RequireAll>
+        Require all granted
+        Require not env goaway
+    </RequireAll>
+</Location>
+ +

+ Wie oben erwähnt, ist diese Technik trivial zu umgehen, indem man + einfach den USER_AGENT-Anfrage-Header ändert. Wenn Sie + einen anhaltenden Angriff erleben, sollten Sie erwägen, diesen + auf einer höheren Ebene zu blockieren, beispielsweise an Ihrer Firewall. +

+ +
+ +
+ +
top
+
+

Ablehnung von Hosts in einer Sperrliste

+ + + +
+
Beschreibung:
+ +
+

Wir möchten eine Liste von Hosts pflegen, ähnlich wie + hosts.deny, und diesen Hosts den Zugriff auf + unseren Server verweigern.

+
+ +
Lösung:
+ +
+
RewriteEngine on
+RewriteMap    hosts-deny  "txt:/path/to/hosts.deny"
+RewriteCond   "${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND}" "!=NOT-FOUND" [OR]
+RewriteCond   "${hosts-deny:%{REMOTE_HOST}|NOT-FOUND}" "!=NOT-FOUND"
+RewriteRule   "^"                                      "-"           [F]
+ + +

+##
+## hosts.deny
+##
+## ACHTUNG! Dies ist eine Map, keine Liste, auch wenn wir sie als solche behandeln.
+## mod_rewrite parst sie nach Schlüssel/Wert-Paaren, daher muss mindestens
+## ein Dummy-Wert "-" für jeden Eintrag vorhanden sein.
+##
+
+193.102.180.41 -
+bsdti1.sdm.de -
+192.76.162.40 -
+

+
+ +
Diskussion:
+
+

+ Die zweite RewriteCond setzt voraus, dass HostNameLookups aktiviert ist, + damit Client-IP-Adressen aufgelöst werden. Wenn dies nicht der Fall ist, + sollten Sie die zweite RewriteCond weglassen und das [OR]-Flag + von der ersten RewriteCond entfernen. +

+
+
+ +
top
+
+

Referer-basierter Umleiter

+ + + +
+
Beschreibung:
+ +
+

Anfragen basierend auf dem Referer umleiten, von dem die Anfrage + kam, mit unterschiedlichen Zielen pro Referer.

+
+ +
Lösung:
+ +
+

Der folgende Regelsatz verwendet eine Map-Datei, um jeden Referer + mit einem Umleitungsziel zu verknüpfen.

+ +
RewriteMap  deflector "txt:/path/to/deflector.map"
+
+RewriteCond "%{HTTP_REFERER}"              !=""
+RewriteCond "${deflector:%{HTTP_REFERER}}" =-
+RewriteRule "^"                            "%{HTTP_REFERER}" [R,L]
+
+RewriteCond "%{HTTP_REFERER}"              !=""
+RewriteCond "${deflector:%{HTTP_REFERER}|NOT-FOUND}" "!=NOT-FOUND"
+RewriteRule "^"                            "${deflector:%{HTTP_REFERER}}" [R,L]
+ + +

Die Map-Datei listet Umleitungsziele für jeden Referer auf, oder, + wenn wir nur zurück dorthin umleiten möchten, woher sie kamen, wird ein + "-" in die Map eingetragen:

+ +
##
+##  deflector.map
+##
+
+http://badguys.example.com/bad/index.html    -
+http://badguys.example.com/bad/index2.html   -
+http://badguys.example.com/bad/index3.html   http://somewhere.example.com/
+ + +
+
+ +
+
+

Verfügbare Sprachen:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/access.html.en.utf8 b/docs/manual/rewrite/access.html.en.utf8 index 5eef1bb19a..9a1a89cf30 100644 --- a/docs/manual/rewrite/access.html.en.utf8 +++ b/docs/manual/rewrite/access.html.en.utf8 @@ -23,8 +23,14 @@
Apache > HTTP Server > Documentation > Version 2.5 > Rewrite

Using mod_rewrite to control access

-

Available Languages:  en  | - fr 

+

Available Languages:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

@@ -294,8 +300,14 @@ http://badguys.example.com/bad/index3.html http://somewhere.example.com/
-

Available Languages:  en  | - fr 

+

Available Languages:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+ + + +
<-
+
+Apache > Servidor HTTP > Documentación > Versión 2.5 > Rewrite

Uso de mod_rewrite para control de acceso

+
+

Idiomas disponibles:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ + +

Este documento complementa la mod_rewrite +documentación de referencia. Describe +cómo puede usar mod_rewrite para controlar el acceso a +varios recursos, y otras técnicas relacionadas. +Esto incluye muchos ejemplos de usos comunes de mod_rewrite, +incluyendo descripciones detalladas de cómo funciona cada uno.

+ +
Tenga en cuenta que muchos de estos ejemplos no funcionarán sin cambios en su +configuración particular del servidor, por lo que es importante que los +entienda, en lugar de simplemente copiar y pegar los ejemplos en su +configuración.
+ +
+ +
top
+
+

Prohibir el "Hotlinking" de imágenes

+ + + +
+
Descripción:
+ +
+

La siguiente técnica prohíbe la práctica de que otros sitios + incluyan sus imágenes en línea en sus páginas. Esta práctica se + conoce a menudo como "hotlinking", y resulta en que + su ancho de banda se use para servir contenido del sitio de + otra persona.

+
+ +
Solución:
+ +
+

Esta técnica se basa en el valor de la + variable HTTP_REFERER, que es opcional. Como + tal, es posible que algunas personas eviten esta + limitación. Sin embargo, la mayoría de los usuarios experimentarán la + solicitud fallida, lo que debería, con el tiempo, resultar en que la + imagen sea eliminada del otro sitio.

+

Hay varias formas en las que puede manejar esta + situación.

+ +

En este primer ejemplo, simplemente denegamos la solicitud, si no se + originó desde una página en nuestro sitio. Para el propósito de este ejemplo, + asumimos que nuestro sitio es www.example.com.

+ + + +
RewriteCond "%{HTTP_REFERER}"  "!^$"
+RewriteCond "%{HTTP_REFERER}"  "!www.example.com" [NC]
+RewriteRule "\.(gif|jpg|png)$" "-"                [F,NC]
+ + +

En este segundo ejemplo, en lugar de denegar la solicitud, mostramos + una imagen alternativa en su lugar.

+ +
RewriteCond "%{HTTP_REFERER}"  "!^$"
+RewriteCond "%{HTTP_REFERER}"  "!www.example.com"      [NC]
+RewriteRule "\.(gif|jpg|png)$" "/images/go-away.png"   [R,NC]
+ + +

En el tercer ejemplo, redirigimos la solicitud a una imagen en algún + otro sitio.

+ +
RewriteCond "%{HTTP_REFERER}"  "!^$"
+RewriteCond "%{HTTP_REFERER}"  "!www.example.com"                    [NC]
+RewriteRule "\.(gif|jpg|png)$" "http://other.example.com/image.gif"  [R,NC]
+ + +

De estas técnicas, las dos últimas tienden a ser las más efectivas + para lograr que la gente deje de hacer hotlinking de sus imágenes, porque + simplemente no verán la imagen que esperaban ver.

+ +
+ +
Discusión:
+ +
+

Si todo lo que desea hacer es denegar el acceso al recurso, en lugar + de redirigir esa solicitud a otro lugar, esto se puede + lograr sin el uso de mod_rewrite:

+ +
SetEnvIf Referer example\.com localreferer
+<FilesMatch "\.(jpg|png|gif)$">
+    Require env localreferer
+</FilesMatch>
+ +
+
+ +
top
+
+

Bloqueo de Robots

+ + + +
+
Descripción:
+ +
+

+ En esta receta, discutimos cómo bloquear solicitudes persistentes de + un robot o agente de usuario en particular.

+ +

El estándar para exclusión de robots define un archivo, + /robots.txt que especifica aquellas partes de su + sitio web donde desea excluir robots. Sin embargo, algunos robots + no respetan estos archivos. +

+ +

Tenga en cuenta que hay métodos para lograr esto que no + usan mod_rewrite. Tenga en cuenta también que cualquier técnica que dependa + de la cadena USER_AGENT del cliente puede ser evitada + muy fácilmente, ya que esa cadena puede cambiarse.

+
+ +
Solución:
+ +
+

Usamos un conjunto de reglas que especifica el directorio a ser + protegido, y el USER_AGENT del cliente que + identifica al robot malicioso o persistente.

+ +

En este ejemplo, estamos bloqueando un robot llamado + NameOfBadRobot de una ubicación + /secret/files. También puede especificar un rango de + direcciones IP, si está intentando bloquear ese agente de usuario solo desde + la fuente particular.

+ +
RewriteCond "%{HTTP_USER_AGENT}"   "^NameOfBadRobot"
+RewriteCond "%{REMOTE_ADDR}"       "=123\.45\.67\.[8-9]"
+RewriteRule "^/secret/files/"      "-"                   [F]
+ +
+ +
Discusión:
+ +
+

+ En lugar de usar mod_rewrite para esto, puede lograr el + mismo resultado usando medios alternativos, como se ilustra aquí: +

+
SetEnvIfNoCase User-Agent ^NameOfBadRobot goaway
+<Location "/secret/files">
+    <RequireAll>
+        Require all granted
+        Require not env goaway
+    </RequireAll>
+</Location>
+ +

+ Como se indicó anteriormente, esta técnica es trivial de evadir, simplemente + modificando la cabecera de solicitud USER_AGENT. Si + está experimentando un ataque sostenido, debería considerar bloquearlo + a un nivel superior, como en su firewall. +

+ +
+ +
+ +
top
+
+

Denegación de Hosts en una Lista de Rechazo

+ + + +
+
Descripción:
+ +
+

Deseamos mantener una lista de hosts, similar a + hosts.deny, y hacer que esos hosts sean bloqueados + del acceso a nuestro servidor.

+
+ +
Solución:
+ +
+
RewriteEngine on
+RewriteMap    hosts-deny  "txt:/path/to/hosts.deny"
+RewriteCond   "${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND}" "!=NOT-FOUND" [OR]
+RewriteCond   "${hosts-deny:%{REMOTE_HOST}|NOT-FOUND}" "!=NOT-FOUND"
+RewriteRule   "^"                                      "-"           [F]
+ + +

+##
+## hosts.deny
+##
+## ¡ATENCIÓN! Esto es un mapa, no una lista, incluso cuando lo tratamos como tal.
+## mod_rewrite lo analiza buscando pares clave/valor, así que al menos un
+## valor ficticio "-" debe estar presente para cada entrada.
+##
+
+193.102.180.41 -
+bsdti1.sdm.de -
+192.76.162.40 -
+

+
+ +
Discusión:
+
+

+ La segunda RewriteCond asume que tiene HostNameLookups activado, + de modo que las direcciones IP de los clientes sean resueltas. Si ese no es el + caso, debería eliminar la segunda RewriteCond, y eliminar la + bandera [OR] de la primera RewriteCond. +

+
+
+ +
top
+
+

Deflector basado en Referer

+ + + +
+
Descripción:
+ +
+

Redirigir solicitudes basadas en el Referer del cual provino la solicitud, + con diferentes destinos por Referer.

+
+ +
Solución:
+ +
+

El siguiente conjunto de reglas usa un archivo de mapa para asociar cada Referer + con un destino de redirección.

+ +
RewriteMap  deflector "txt:/path/to/deflector.map"
+
+RewriteCond "%{HTTP_REFERER}"              !=""
+RewriteCond "${deflector:%{HTTP_REFERER}}" =-
+RewriteRule "^"                            "%{HTTP_REFERER}" [R,L]
+
+RewriteCond "%{HTTP_REFERER}"              !=""
+RewriteCond "${deflector:%{HTTP_REFERER}|NOT-FOUND}" "!=NOT-FOUND"
+RewriteRule "^"                            "${deflector:%{HTTP_REFERER}}" [R,L]
+ + +

El archivo de mapa lista los destinos de redirección para cada referer, o, si + simplemente deseamos redirigir de vuelta a donde vinieron, se coloca un "-" + en el mapa:

+ +
##
+##  deflector.map
+##
+
+http://badguys.example.com/bad/index.html    -
+http://badguys.example.com/bad/index2.html   -
+http://badguys.example.com/bad/index3.html   http://somewhere.example.com/
+ + +
+
+ +
+
+

Idiomas disponibles:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/access.html.fr.utf8 b/docs/manual/rewrite/access.html.fr.utf8 index a0b1c9b51a..96886cdbd1 100644 --- a/docs/manual/rewrite/access.html.fr.utf8 +++ b/docs/manual/rewrite/access.html.fr.utf8 @@ -23,8 +23,14 @@
Apache > Serveur HTTP > Documentation > Version 2.5 > Rewrite

Utiliser mod_rewrite pour le contrôle d'accès

-

Langues Disponibles:  en  | - fr 

+

Langues Disponibles:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

@@ -302,8 +308,14 @@ http://badguys.example.com/bad/index3.html http://somewhere.example.com/
-

Langues Disponibles:  en  | - fr 

+

Langues Disponibles:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+ + + +
<-
+
+Apache > HTTP サーバ > ドキュメンテーション > バージョン 2.5 > Rewrite

mod_rewrite を使ったアクセス制御

+
+

翻訳済み言語:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ + +

このドキュメントは mod_rewrite +リファレンスドキュメントを補足するものです。 +mod_rewrite を使用してさまざまなリソースへのアクセスを制御する方法と、 +その他の関連テクニックについて説明します。 +mod_rewrite の一般的な使用例を多数含んでおり、 +それぞれの動作についての詳細な説明も含まれています。

+ +
これらの例の多くは、特定のサーバ設定ではそのまま +動作しないことに注意してください。そのため、単にコピー&ペーストするのではなく、 +内容を理解することが重要です。
+ +
+ +
top
+
+

画像の "直リンク" の禁止

+ + + +
+
説明:
+ +
+

以下のテクニックは、他のサイトがあなたの画像をそのページに + インラインで含める行為を禁止します。この行為は + "直リンク" と呼ばれることが多く、あなたの帯域幅が + 他のサイトのコンテンツ提供のために使用される結果となります。

+
+ +
解決方法:
+ +
+

このテクニックは HTTP_REFERER 変数の値に + 依存していますが、この値はオプションです。そのため、一部の + ユーザはこの制限を回避できます。ただし、ほとんどのユーザは + リクエスト失敗を経験し、時間の経過とともにその画像が + 他のサイトから削除される結果となるはずです。

+

この状況に対処する方法はいくつかあります。

+ +

最初の例では、リクエストが当サイトのページから開始されたものでない + 場合、単純にリクエストを拒否します。この例では、当サイトが + www.example.com であると仮定しています。

+ + + +
RewriteCond "%{HTTP_REFERER}"  "!^$"
+RewriteCond "%{HTTP_REFERER}"  "!www.example.com" [NC]
+RewriteRule "\.(gif|jpg|png)$" "-"                [F,NC]
+ + +

2 番目の例では、リクエストを失敗させる代わりに、 + 代替画像を表示します。

+ +
RewriteCond "%{HTTP_REFERER}"  "!^$"
+RewriteCond "%{HTTP_REFERER}"  "!www.example.com"      [NC]
+RewriteRule "\.(gif|jpg|png)$" "/images/go-away.png"   [R,NC]
+ + +

3 番目の例では、リクエストを他のサイトの画像にリダイレクト + します。

+ +
RewriteCond "%{HTTP_REFERER}"  "!^$"
+RewriteCond "%{HTTP_REFERER}"  "!www.example.com"                    [NC]
+RewriteRule "\.(gif|jpg|png)$" "http://other.example.com/image.gif"  [R,NC]
+ + +

これらのテクニックのうち、後の 2 つが画像の直リンクをやめさせる + のに最も効果的です。期待していた画像が表示されなくなるためです。

+ +
+ +
議論:
+ +
+

リクエストを他の場所にリダイレクトするのではなく、単にリソースへの + アクセスを拒否したいだけの場合、mod_rewrite を使わずに + 実現できます:

+ +
SetEnvIf Referer example\.com localreferer
+<FilesMatch "\.(jpg|png|gif)$">
+    Require env localreferer
+</FilesMatch>
+ +
+
+ +
top
+
+

ロボットのブロック

+ + + +
+
説明:
+ +
+

+ このレシピでは、特定のロボットやユーザエージェントからの + しつこいリクエストをブロックする方法について説明します。

+ +

ロボット排除の標準では、ウェブサイトのどの部分でロボットを + 除外したいかを指定する /robots.txt というファイルが + 定義されています。しかし、一部のロボットはこれらのファイルを + 尊重しません。

+ +

mod_rewrite を使用しない方法もあることに注意してください。 + また、クライアントの USER_AGENT 文字列に依存する + テクニックは、その文字列を変更できるため、非常に簡単に回避できる + ことにも注意してください。

+
+ +
解決方法:
+ +
+

保護するディレクトリと、悪意のあるまたはしつこいロボットを + 識別するクライアント USER_AGENT を指定する + ルールセットを使用します。

+ +

この例では、NameOfBadRobot というロボットを + /secret/files という場所からブロックしています。 + 特定のソースからのみそのユーザエージェントをブロックしたい場合は、 + IP アドレス範囲も指定できます。

+ +
RewriteCond "%{HTTP_USER_AGENT}"   "^NameOfBadRobot"
+RewriteCond "%{REMOTE_ADDR}"       "=123\.45\.67\.[8-9]"
+RewriteRule "^/secret/files/"      "-"                   [F]
+ +
+ +
議論:
+ +
+

+ mod_rewrite を使わずに、次に示すような代替手段で + 同じ目的を達成できます: +

+
SetEnvIfNoCase User-Agent ^NameOfBadRobot goaway
+<Location "/secret/files">
+    <RequireAll>
+        Require all granted
+        Require not env goaway
+    </RequireAll>
+</Location>
+ +

+ 上記で述べたように、このテクニックは USER_AGENT + リクエストヘッダを変更するだけで簡単に回避できます。持続的な + 攻撃を受けている場合は、ファイアウォールなどのより上位のレベルで + ブロックすることを検討してください。 +

+ +
+ +
+ +
top
+
+

拒否リストのホストの拒否

+ + + +
+
説明:
+ +
+

hosts.deny のようなホストのリストを管理し、 + それらのホストがサーバにアクセスするのをブロックしたいと + 考えています。

+
+ +
解決方法:
+ +
+
RewriteEngine on
+RewriteMap    hosts-deny  "txt:/path/to/hosts.deny"
+RewriteCond   "${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND}" "!=NOT-FOUND" [OR]
+RewriteCond   "${hosts-deny:%{REMOTE_HOST}|NOT-FOUND}" "!=NOT-FOUND"
+RewriteRule   "^"                                      "-"           [F]
+ + +

+##
+## hosts.deny
+##
+## 注意! これはリストではなくマップです。リストとして扱う場合でも、
+## mod_rewrite はキー/値のペアとして解析するため、各エントリに
+## 少なくともダミーの値 "-" が必要です。
+##
+
+193.102.180.41 -
+bsdti1.sdm.de -
+192.76.162.40 -
+

+
+ +
議論:
+
+

+ 2 番目の RewriteCond は、HostNameLookups がオンになっていて、 + クライアント IP アドレスが解決されることを前提としています。 + そうでない場合は、2 番目の RewriteCond を削除し、最初の + RewriteCond から [OR] フラグを削除してください。 +

+
+
+ +
top
+
+

リファラに基づくデフレクタ

+ + + +
+
説明:
+ +
+

リクエストの送信元のリファラに基づいてリクエストをリダイレクトし、 + リファラごとに異なるターゲットを設定します。

+
+ +
解決方法:
+ +
+

以下のルールセットは、マップファイルを使用して各リファラを + リダイレクト先に関連付けます。

+ +
RewriteMap  deflector "txt:/path/to/deflector.map"
+
+RewriteCond "%{HTTP_REFERER}"              !=""
+RewriteCond "${deflector:%{HTTP_REFERER}}" =-
+RewriteRule "^"                            "%{HTTP_REFERER}" [R,L]
+
+RewriteCond "%{HTTP_REFERER}"              !=""
+RewriteCond "${deflector:%{HTTP_REFERER}|NOT-FOUND}" "!=NOT-FOUND"
+RewriteRule "^"                            "${deflector:%{HTTP_REFERER}}" [R,L]
+ + +

マップファイルには各リファラのリダイレクト先が記述されています。 + 単にリファラ元にリダイレクトしたい場合は、マップに + "-" を配置します:

+ +
##
+##  deflector.map
+##
+
+http://badguys.example.com/bad/index.html    -
+http://badguys.example.com/bad/index2.html   -
+http://badguys.example.com/bad/index3.html   http://somewhere.example.com/
+ + +
+
+ +
+
+

翻訳済み言語:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/access.html.ko.euc-kr b/docs/manual/rewrite/access.html.ko.euc-kr new file mode 100644 index 0000000000..b45366e457 --- /dev/null +++ b/docs/manual/rewrite/access.html.ko.euc-kr @@ -0,0 +1,316 @@ + + + + + +mod_rewriteë¥� �¬ì�©í�� ��ê·� ���� - Apache HTTP Server Version 2.5 + + + + + + + +
<-
+
+Apache > HTTP Server > Documentation > Version 2.5 > Rewrite

mod_rewriteë¥� �¬ì�©í�� ��ê·� ����

+
+

°¡´ÉÇÑ ¾ð¾î:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ + +

�� 문ì���� mod_rewrite +참조 문ì��ë¥� ë³´ì¶©�©ë����. +mod_rewriteë¥� �¬ì�©í���� �¤ì���� ������ ���� +��ê·¼ì�� ���´í���� ë°©ë�ê³� 기í�� ê´��� 기ì���� �¤ë��©ë����. +�¬ê¸°���� mod_rewrite�� �¼ë����� �¬ì�� ����ê°� +ë§��� �¬í�¨ë���� ���¼ë©°, ê°�ê°��� �´ë�»ê� ��������ì§��� ���� +���¸í�� �¤ë��� ���µë����.

+ +
�� ������ ì¤� ë§��� ê²��� �¹ì�� ��ë²� �¤ì������ +ê·¸ë��ë¡� ������ì§� ���� �� ���¼ë��ë¡�, �¨ì���� ����ë¥� ë³µì�¬í���� +�¤ì���� ë¶��¬ë�£ê¸°ë³´ë�¤ë�� �´í�´í���� ê²��� ì¤����©ë����.
+ +
+ +
top
+
+

�´ë�¸ì� "�«ë���" ê¸�ì§�

+ + + +
+
�¤ë�:
+ +
+

�¤ì�� 기ì���� �¤ë¥¸ �¬ì�´í�¸ê� �¬ë�¬ë��� �´ë�¸ì�ë¥� + ������ ���´ì��� �¸ë�¼ì�¸ì�¼ë� �¬í�¨í���� ê²��� ê¸�ì§��©ë����. + �� ������ ���� "�«ë���"�´ë�¼ê� ��ë©�, + �¬ë�¬ë��� �������� �¤ë¥¸ �¬ì�´í�¸ì�� ì½���ì¸�ë¥� ��ê³µí���� �� + �¬ì�©ë���� ê²°ê³¼ë¥� ì´����©ë����.

+
+ +
�´ê²°ì±�:
+ +
+

�� 기ì���� HTTP_REFERER ë³����� ê°��� + ��ì¡´í��ë©�, �´ë�� ������������. �°ë�¼ì�� �¼ë� �¬ì�©ì��ê°� + �� ������ �°í���� �� ���µë����. ê·¸ë�¬ë�� ��ë¶�ë¶��� + �¬ì�©ì���� �¤í�¨í�� ��ì²��� ê²½í����ê²� ��ë©�, ��ê°��� ì§���ë©� + �´ë�� �´ë�¸ì�ê°� �¤ë¥¸ �¬ì�´í�¸ì���� ��ê±°ë���� ê²°ê³¼ë¥� + ê°��¸ì�� ê²�������.

+

�� ���©ì�� ì²�리í���� ëª� ê°�ì§� ë°©ë��� ���µë����.

+ +

ì²� ë²�ì§� ���������� �°ë¦¬ �¬ì�´í�¸ì�� ���´ì����� ������ì§� ���� + ��ì²��� �¨ì���� ê±°ë��©ë����. �� ���������� �°ë¦¬ �¬ì�´í�¸ê� + www.example.com�´ë�¼ê� ê°����©ë����.

+ + + +
RewriteCond "%{HTTP_REFERER}"  "!^$"
+RewriteCond "%{HTTP_REFERER}"  "!www.example.com" [NC]
+RewriteRule "\.(gif|jpg|png)$" "-"                [F,NC]
+ + +

�� ë²�ì§� ���������� ��ì²��� �¤í�¨ì���¤ë�� ���� + ��ì²� �´ë�¸ì�ë¥� �����©ë����.

+ +
RewriteCond "%{HTTP_REFERER}"  "!^$"
+RewriteCond "%{HTTP_REFERER}"  "!www.example.com"      [NC]
+RewriteRule "\.(gif|jpg|png)$" "/images/go-away.png"   [R,NC]
+ + +

�� ë²�ì§� ���������� ��ì²��� �¤ë¥¸ �¬ì�´í�¸ì�� �´ë�¸ì�ë¡� + 리ë�¤ì�´ë���¸í�©ë����.

+ +
RewriteCond "%{HTTP_REFERER}"  "!^$"
+RewriteCond "%{HTTP_REFERER}"  "!www.example.com"                    [NC]
+RewriteRule "\.(gif|jpg|png)$" "http://other.example.com/image.gif"  [R,NC]
+ + +

�� 기ì���� ì¤� ë§�ì§�ë§� �� ê°�ì§�ê°� �´ë�¸ì� �«ë��¹ì�� + ì¤��¨ì���¤ë�� �� ê°��� �¨ê³¼��������. �¬ì�©ì���¤ì�� 기ë���� + �´ë�¸ì�ë¥� ë³� �� ��ê¸� ��문ì������.

+ +
+ +
���:
+ +
+

��ì²��� �¤ë¥¸ ê³³ì�¼ë� 리ë�¤ì�´ë���¸í���� ê²��� ������ + �¨ì���� ������ ���� ��ê·¼ì�� ê±°ë����¤ë�� ê²½ì��, + mod_rewriteë¥� �¬ì�©í��ì§� ��ê³��� + �´ë�� ������ �� ���µë����:

+ +
SetEnvIf Referer example\.com localreferer
+<FilesMatch "\.(jpg|png|gif)$">
+    Require env localreferer
+</FilesMatch>
+ +
+
+ +
top
+
+

�� 차�

+ + + +
+
�¤ë�:
+ +
+

�� �����¼ì������ �¹ì�� ë¡�ë´� ���� �¬ì�©ì�� ���´ì���¸ì�� + ì§������� ��ì²��� ì°¨ë�¨í���� ë°©ë��� �¼ì���©ë����.

+ +

ë¡�ë´� ë°°ì�� ��ì¤��� /robots.txt�¼ë�� + ���¼ì�� ������ë©�, �� ���¼ì�� ë¡�ë´��� ë°°ì����ê³��� ���� + �¹ì�¬ì�´í�¸ì�� ë¶�ë¶��� ì§����©ë����. ê·¸ë�¬ë�� �¼ë� ë¡�ë´��� + �� ���¼ì�� ì¤�����ì§� ���µë����.

+ +

mod_rewriteë¥� �¬ì�©í��ì§� ��ê³��� + �´ë�� ������ �� ���� ë°©ë��� ���¤ë�� ���� ������������. + ���� �´ë�¼ì�´ì�¸í�¸ì�� USER_AGENT 문ì���´ì�� + ��ì¡´í���� 기ì���� �´ë�� 문ì���´ì�� �½ê� ë³�ê²½í�� �� ���¼ë��ë¡� + 매ì�� �½ê� �°í���� �� ���¤ë�� ���� ������������.

+
+ +
�´ê²°ì±�:
+ +
+

ë³´í�¸í�� ������리ì�� �������´ê±°�� ì§������� ë¡�ë´��� + ��ë³����� �´ë�¼ì�´ì�¸í�� USER_AGENTë¥� + ì§������� ê·�ì¹� �¸í�¸ë�� �¬ì�©í�©ë����.

+ +

�� ���������� NameOfBadRobot�´ë�¼ë�� + ë¡�ë´��� /secret/files ��ì¹����� + ì°¨ë�¨í�©ë����. �¹ì�� ���¤ì����ë§� �´ë�� �¬ì�©ì�� ���´ì���¸ë�� + ì°¨ë�¨í���¤ë�� ê²½ì�� IP 주ì�� ë²���ë¥� ì§����� ���� ���µë����.

+ +
RewriteCond "%{HTTP_USER_AGENT}"   "^NameOfBadRobot"
+RewriteCond "%{REMOTE_ADDR}"       "=123\.45\.67\.[8-9]"
+RewriteRule "^/secret/files/"      "-"                   [F]
+ +
+ +
���:
+ +
+

+ mod_rewriteë¥� �¬ì�©í���� ����, �¬ê¸°�� �¤ë��� ��ë¡� + �¤ë¥¸ ë°©ë��� �¬ì�©í���� ���¼í�� ê²°ê³¼ë¥� �¬ì�±í�� �� ���µë����: +

+
SetEnvIfNoCase User-Agent ^NameOfBadRobot goaway
+<Location "/secret/files">
+    <RequireAll>
+        Require all granted
+        Require not env goaway
+    </RequireAll>
+</Location>
+ +

+ ������ �¸ê��� ë°��� ê°���, �� 기ì���� USER_AGENT + ��ì²� �¤ë��ë¥� �������� ê²�ë§��¼ë��� �½ê� �°í���� �� ���µë����. + ì§������� 공격�� ë°�ê³� ���¤ë©´, ë°©í��벽과 ê°��� ���� ��ì¤����� + ì°¨ë�¨í���� ê²��� ê³��¤í�´ì�� �©ë����. +

+ +
+ +
+ +
top
+
+

ê±°ë� 목ë��� �¸ì�¤í�� ì°¨ë��

+ + + +
+
�¤ë�:
+ +
+

hosts.deny�� ê°��� �¸ì�¤í�� 목ë��� ê´�리í���� + �´ë�� �¸ì�¤í�¸ê� ��ë²��� ��ê·¼í��ì§� 못í����ë¡� ì°¨ë�¨í��ê³��� �©ë����.

+
+ +
�´ê²°ì±�:
+ +
+
RewriteEngine on
+RewriteMap    hosts-deny  "txt:/path/to/hosts.deny"
+RewriteCond   "${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND}" "!=NOT-FOUND" [OR]
+RewriteCond   "${hosts-deny:%{REMOTE_HOST}|NOT-FOUND}" "!=NOT-FOUND"
+RewriteRule   "^"                                      "-"           [F]
+ + +

+##
+## hosts.deny
+##
+## 주ì��! �´ê��� 목ë��� ������ ë§µì������.
+## mod_rewriteê°� ��/ê°� ���� ���±í��ë¯�ë¡� ê°� ��목ì��
+## ìµ����� ��ë¯� ê°� "-"�� ���´ì�� �©ë����.
+##
+
+193.102.180.41 -
+bsdti1.sdm.de -
+192.76.162.40 -
+

+
+ +
���:
+
+

+ �� ë²�ì§� RewriteCond�� HostNameLookupsê°� ì¼��� ���� + �´ë�¼ì�´ì�¸í�� IP 주ì��ê°� �´ì�����¤ê� ê°����©ë����. ê·¸ë��ì§� + ���� ê²½ì��, �� ë²�ì§� RewriteCondë¥� ������ê³� ì²� ë²�ì§� + RewriteCond���� [OR] ����ê·¸ë�� ��ê±°í�´ì�� + �©ë����. +

+
+
+ +
top
+
+

리í�¼ë�� 기ë� ��������

+ + + +
+
�¤ë�:
+ +
+

��ì²��� �� 리í�¼ë�¬ì�� �°ë�� ��ì²��� 리ë�¤ì�´ë���¸í��ë©�, + 리í�¼ë�¬ë�ë¡� �¤ë¥¸ ������ ì§����©ë����.

+
+ +
�´ê²°ì±�:
+ +
+

�¤ì�� ê·�ì¹� �¸í�¸ë�� ë§� ���¼ì�� �¬ì�©í���� ê°� 리í�¼ë�¬ë�� + 리ë�¤ì�´ë���� ����ê³� �°ê²°�©ë����.

+ +
RewriteMap  deflector "txt:/path/to/deflector.map"
+
+RewriteCond "%{HTTP_REFERER}"              !=""
+RewriteCond "${deflector:%{HTTP_REFERER}}" =-
+RewriteRule "^"                            "%{HTTP_REFERER}" [R,L]
+
+RewriteCond "%{HTTP_REFERER}"              !=""
+RewriteCond "${deflector:%{HTTP_REFERER}|NOT-FOUND}" "!=NOT-FOUND"
+RewriteRule "^"                            "${deflector:%{HTTP_REFERER}}" [R,L]
+ + +

ë§� ���¼ì�� ê°� 리í�¼ë�¬ì�� ���� 리ë�¤ì�´ë���� ������ + ���´í��ê±°ë��, �¨ì���� ���� ��ì¹�ë¡� 리ë�¤ì�´ë���¸í���¤ë�� + ê²½ì�� ë§µì�� "-"�� �£ì�µë����:

+ +
##
+##  deflector.map
+##
+
+http://badguys.example.com/bad/index.html    -
+http://badguys.example.com/bad/index2.html   -
+http://badguys.example.com/bad/index3.html   http://somewhere.example.com/
+ + +
+
+ +
+
+

°¡´ÉÇÑ ¾ð¾î:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/access.html.tr.utf8 b/docs/manual/rewrite/access.html.tr.utf8 new file mode 100644 index 0000000000..c5aa268221 --- /dev/null +++ b/docs/manual/rewrite/access.html.tr.utf8 @@ -0,0 +1,318 @@ + + + + + +Erişim Denetimi için mod_rewrite Kullanımı - Apache HTTP Sunucusu Sürüm 2.5 + + + + + + + +
<-
+
+Apache > HTTP Sunucusu > Belgeleme > Sürüm 2.5 > Rewrite

Erişim Denetimi için mod_rewrite Kullanımı

+
+

Mevcut Diller:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ + +

Bu belge, mod_rewrite +başvuru belgelerini tamamlar. +Çeşitli kaynaklara erişimi denetlemek için mod_rewrite +modülünü nasıl kullanabileceğinizi ve diğer ilgili teknikleri açıklar. +mod_rewrite modülünün yaygın kullanımlarına ilişkin, +her birinin nasıl çalıştığının ayrıntılı açıklamalarını içeren birçok +örnek sunulmaktadır.

+ +
Bu örneklerin birçoğunun sizin sunucu yapılandırmanızda +değişiklik yapılmadan çalışmayacağını unutmayın; bu nedenle örnekleri +yapılandırmanıza kopyalayıp yapıştırmak yerine anlamanız +önemlidir.
+ +
+ +
top
+
+

Resim "Hotlinking"inin Engellenmesi

+ + + +
+
Açıklama:
+ +
+

Aşağıdaki teknik, diğer sitelerin resimlerinizi kendi + sayfalarına satır içi olarak dahil etme uygulamasını engeller. + Bu uygulama genellikle "hotlinking" olarak anılır ve + bant genişliğinizin başkasının sitesi için içerik sunmak + amacıyla kullanılmasına neden olur.

+
+ +
Çözüm:
+ +
+

Bu teknik, isteğe bağlı olan HTTP_REFERER + değişkeninin değerine dayanır. Bu nedenle, bazı kişilerin bu + sınırlamayı atlaması mümkündür. Ancak çoğu kullanıcı başarısız + isteği deneyimleyecektir ve bu, zamanla resmin o diğer siteden + kaldırılmasına yol açacaktır.

+

Bu durumu ele almanın birkaç yolu vardır.

+ +

Bu ilk örnekte, istek sitemizden bir sayfadan başlatılmadıysa + isteği reddederiz. Bu örnek için sitemizin + www.example.com olduğunu varsayıyoruz.

+ + + +
RewriteCond "%{HTTP_REFERER}"  "!^$"
+RewriteCond "%{HTTP_REFERER}"  "!www.example.com" [NC]
+RewriteRule "\.(gif|jpg|png)$" "-"                [F,NC]
+ + +

Bu ikinci örnekte, isteği reddetmek yerine alternatif bir resim + gösteriyoruz.

+ +
RewriteCond "%{HTTP_REFERER}"  "!^$"
+RewriteCond "%{HTTP_REFERER}"  "!www.example.com"      [NC]
+RewriteRule "\.(gif|jpg|png)$" "/images/go-away.png"   [R,NC]
+ + +

Üçüncü örnekte, isteği başka bir sitedeki bir resme + yönlendiriyoruz.

+ +
RewriteCond "%{HTTP_REFERER}"  "!^$"
+RewriteCond "%{HTTP_REFERER}"  "!www.example.com"                    [NC]
+RewriteRule "\.(gif|jpg|png)$" "http://other.example.com/image.gif"  [R,NC]
+ + +

Bu tekniklerden son ikisi, insanların resimlerinizi + hotlinking yapmayı bırakmasını sağlamada en etkili olanlardır; + çünkü görmeyi bekledikleri resmi göremeyeceklerdir.

+ +
+ +
Tartışma:
+ +
+

Tek yapmak istediğiniz kaynağa erişimi reddetmekse, isteği + başka bir yere yönlendirmek yerine bu, + mod_rewrite kullanılmadan da + gerçekleştirilebilir:

+ +
SetEnvIf Referer example\.com localreferer
+<FilesMatch "\.(jpg|png|gif)$">
+    Require env localreferer
+</FilesMatch>
+ +
+
+ +
top
+
+

Robotların Engellenmesi

+ + + +
+
Açıklama:
+ +
+

+ Bu tarifle, belirli bir robot veya kullanıcı aracısından gelen + sürekli isteklerin nasıl engelleneceğini tartışıyoruz.

+ +

Robot dışlama standardı, web sitenizin robotları dışlamak + istediğiniz bölümlerini belirten /robots.txt + adında bir dosya tanımlar. Ancak bazı robotlar bu dosyalara + uymaz.

+ +

Bunu gerçekleştirmenin mod_rewrite + kullanmayan yöntemleri olduğunu unutmayın. Ayrıca istemcinin + USER_AGENT dizgesine dayanan herhangi bir tekniğin + kolayca atlanabileceğini de unutmayın; çünkü bu dizge + değiştirilebilir.

+
+ +
Çözüm:
+ +
+

Korunacak dizini ve zararlı ya da ısrarcı robotu tanımlayan + istemci USER_AGENT dizgesini belirten bir kural + kümesi kullanıyoruz.

+ +

Bu örnekte, NameOfBadRobot adlı bir robotu + /secret/files konumundan engelliyoruz. Kullanıcı + aracısını yalnızca belirli bir kaynaktan engellemek istiyorsanız + bir IP adresi aralığı da belirtebilirsiniz.

+ +
RewriteCond "%{HTTP_USER_AGENT}"   "^NameOfBadRobot"
+RewriteCond "%{REMOTE_ADDR}"       "=123\.45\.67\.[8-9]"
+RewriteRule "^/secret/files/"      "-"                   [F]
+ +
+ +
Tartışma:
+ +
+

+ Bunun için mod_rewrite kullanmak yerine, aynı + sonucu burada gösterildiği gibi alternatif yollarla elde + edebilirsiniz: +

+
SetEnvIfNoCase User-Agent ^NameOfBadRobot goaway
+<Location "/secret/files">
+    <RequireAll>
+        Require all granted
+        Require not env goaway
+    </RequireAll>
+</Location>
+ +

+ Yukarıda belirtildiği gibi, bu teknik USER_AGENT + istek başlığını değiştirerek kolayca atlanabilir. Sürekli bir + saldırıyla karşılaşıyorsanız, bunu güvenlik duvarınız gibi daha + üst bir düzeyde engellemeyi düşünmelisiniz. +

+ +
+ +
+ +
top
+
+

Reddetme Listesindeki Konakların Engellenmesi

+ + + +
+
Açıklama:
+ +
+

hosts.deny gibi bir konak listesi tutmak ve bu + konakların sunucumuza erişimini engellemek istiyoruz.

+
+ +
Çözüm:
+ +
+
RewriteEngine on
+RewriteMap    hosts-deny  "txt:/path/to/hosts.deny"
+RewriteCond   "${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND}" "!=NOT-FOUND" [OR]
+RewriteCond   "${hosts-deny:%{REMOTE_HOST}|NOT-FOUND}" "!=NOT-FOUND"
+RewriteRule   "^"                                      "-"           [F]
+ + +

+##
+## hosts.deny
+##
+## DİKKAT! Bu bir liste değil, bir eşlem dosyasıdır.
+## mod_rewrite bunu anahtar/değer çiftleri olarak çözümler,
+## bu yüzden her girdi için en azından bir yapay "-" değeri
+## mevcut olmalıdır.
+##
+
+193.102.180.41 -
+bsdti1.sdm.de -
+192.76.162.40 -
+

+
+ +
Tartışma:
+
+

+ İkinci RewriteCond, istemci IP adreslerinin çözümlenmesi için + HostNameLookups özelliğinin açık olduğunu varsayar. Durum böyle + değilse, ikinci RewriteCond'u kaldırmalı ve birinci RewriteCond'dan + [OR] bayrağını çıkarmalısınız. +

+
+
+ +
top
+
+

Referer Tabanlı Yönlendirici

+ + + +
+
Açıklama:
+ +
+

İstekleri, isteğin geldiği Referer'a göre, her Referer için + farklı hedeflerle yeniden yönlendirir.

+
+ +
Çözüm:
+ +
+

Aşağıdaki kural kümesi, her Referer'ı bir yönlendirme hedefiyle + ilişkilendirmek için bir eşlem dosyası kullanır.

+ +
RewriteMap  deflector "txt:/path/to/deflector.map"
+
+RewriteCond "%{HTTP_REFERER}"              !=""
+RewriteCond "${deflector:%{HTTP_REFERER}}" =-
+RewriteRule "^"                            "%{HTTP_REFERER}" [R,L]
+
+RewriteCond "%{HTTP_REFERER}"              !=""
+RewriteCond "${deflector:%{HTTP_REFERER}|NOT-FOUND}" "!=NOT-FOUND"
+RewriteRule "^"                            "${deflector:%{HTTP_REFERER}}" [R,L]
+ + +

Eşlem dosyası, her referer için yeniden yönlendirme hedeflerini + listeler veya yalnızca geldikleri yere geri yönlendirmek + istiyorsak eşleme bir "-" konur:

+ +
##
+##  deflector.map
+##
+
+http://badguys.example.com/bad/index.html    -
+http://badguys.example.com/bad/index2.html   -
+http://badguys.example.com/bad/index3.html   http://somewhere.example.com/
+ + +
+
+ +
+
+

Mevcut Diller:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/access.html.zh-cn.utf8 b/docs/manual/rewrite/access.html.zh-cn.utf8 new file mode 100644 index 0000000000..de7fe7f049 --- /dev/null +++ b/docs/manual/rewrite/access.html.zh-cn.utf8 @@ -0,0 +1,293 @@ + + + + + +使用 mod_rewrite 控制访问 - Apache HTTP 服务器 版本 2.5 + + + + + + + +
<-
+
+Apache > HTTP 服务器 > 文档 > 版本 2.5 > Rewrite

使用 mod_rewrite 控制访问

+
+

可用语言:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ + +

本文档是 mod_rewrite +参考文档的补充。它描述了如何使用 +mod_rewrite 来控制对各种资源的访问,以及其他相关技术。 +其中包括许多 mod_rewrite 的常见用法示例, +以及每个示例工作原理的详细描述。

+ +
请注意,这些示例中的许多不会在你的特定服务器配置中直接生效, +因此理解它们非常重要,而不仅仅是将示例复制粘贴到你的配置中。
+ +
+ +
top
+
+

禁止图片"盗链"

+ + + +
+
描述:
+ +
+

以下技术禁止其他站点将你的图片内联到他们的页面中。 + 这种做法通常被称为"盗链",会导致你的带宽被用来为他人的站点提供内容。

+
+ +
解决方案:
+ +
+

此技术依赖于 HTTP_REFERER 变量的值, + 该变量是可选的。因此,某些人可能会绕过此限制。 + 但是,大多数用户将会遇到请求失败的情况, + 随着时间推移,这应该会导致图片从其他站点上被移除。

+

有几种方法可以处理这种情况。

+ +

在第一个示例中,如果请求不是从我们站点上的页面发起的, + 我们只是简单地拒绝请求。在本示例中, + 我们假设我们的站点是 www.example.com。

+ + + +
RewriteCond "%{HTTP_REFERER}"  "!^$"
+RewriteCond "%{HTTP_REFERER}"  "!www.example.com" [NC]
+RewriteRule "\.(gif|jpg|png)$" "-"                [F,NC]
+ + +

在第二个示例中,我们不是让请求失败,而是显示一个替代图片。

+ +
RewriteCond "%{HTTP_REFERER}"  "!^$"
+RewriteCond "%{HTTP_REFERER}"  "!www.example.com"      [NC]
+RewriteRule "\.(gif|jpg|png)$" "/images/go-away.png"   [R,NC]
+ + +

在第三个示例中,我们将请求重定向到另一个站点上的图片。

+ +
RewriteCond "%{HTTP_REFERER}"  "!^$"
+RewriteCond "%{HTTP_REFERER}"  "!www.example.com"                    [NC]
+RewriteRule "\.(gif|jpg|png)$" "http://other.example.com/image.gif"  [R,NC]
+ + +

在这些技术中,后两种往往最能有效地阻止盗链行为, + 因为他们根本看不到预期的图片。

+ +
+ +
讨论:
+ +
+

如果你只想拒绝对资源的访问,而不是将请求重定向到其他地方, + 可以不使用 mod_rewrite 来实现:

+ +
SetEnvIf Referer example\.com localreferer
+<FilesMatch "\.(jpg|png|gif)$">
+    Require env localreferer
+</FilesMatch>
+ +
+
+ +
top
+
+

阻止机器人

+ + + +
+
描述:
+ +
+

在本配置方案中,我们讨论如何阻止来自特定机器人或用户代理的持续请求。

+ +

机器人排除标准定义了一个文件 /robots.txt, + 用于指定你网站中希望排除机器人访问的部分。但是,某些机器人不遵守这些文件。

+ +

请注意,有些方法可以在不使用 mod_rewrite 的情况下实现此目的。 + 还要注意,任何依赖客户端 USER_AGENT + 字符串的技术都可以很容易地被绕过,因为该字符串可以被更改。

+
+ +
解决方案:
+ +
+

我们使用一组规则来指定要保护的目录, + 以及标识恶意或持续机器人的客户端 USER_AGENT。

+ +

在本示例中,我们从位置 /secret/files + 阻止一个名为 NameOfBadRobot 的机器人。 + 如果你只想从特定来源阻止该用户代理, + 也可以指定 IP 地址范围。

+ +
RewriteCond "%{HTTP_USER_AGENT}"   "^NameOfBadRobot"
+RewriteCond "%{REMOTE_ADDR}"       "=123\.45\.67\.[8-9]"
+RewriteRule "^/secret/files/"      "-"                   [F]
+ +
+ +
讨论:
+ +
+

+ 你可以使用替代方法来实现相同的目的,而不必使用 + mod_rewrite,如下所示: +

+
SetEnvIfNoCase User-Agent ^NameOfBadRobot goaway
+<Location "/secret/files">
+    <RequireAll>
+        Require all granted
+        Require not env goaway
+    </RequireAll>
+</Location>
+ +

+ 如上所述,这种技术很容易被绕过,只需修改 + USER_AGENT 请求头即可。如果你遭受持续攻击, + 应考虑在更高层级(如防火墙)进行阻止。 +

+ +
+ +
+ +
top
+
+

拒绝列表中的主机

+ + + +
+
描述:
+ +
+

我们希望维护一个主机列表,类似于 hosts.deny, + 并阻止这些主机访问我们的服务器。

+
+ +
解决方案:
+ +
+
RewriteEngine on
+RewriteMap    hosts-deny  "txt:/path/to/hosts.deny"
+RewriteCond   "${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND}" "!=NOT-FOUND" [OR]
+RewriteCond   "${hosts-deny:%{REMOTE_HOST}|NOT-FOUND}" "!=NOT-FOUND"
+RewriteRule   "^"                                      "-"           [F]
+ + +

+##
+## hosts.deny
+##
+## 注意!这是一个映射文件,不是列表,即使我们将其作为列表使用。
+## mod_rewrite 将其解析为键/值对,因此每个条目
+## 至少必须存在一个虚拟值 "-"。
+##
+
+193.102.180.41 -
+bsdti1.sdm.de -
+192.76.162.40 -
+

+
+ +
讨论:
+
+

+ 第二个 RewriteCond 假设你已启用 HostNameLookups, + 以便客户端 IP 地址会被解析。如果未启用, + 你应该删除第二个 RewriteCond,并从第一个 RewriteCond 中删除 + [OR] 标志。 +

+
+
+ +
top
+
+

基于 Referer 的转向器

+ + + +
+
描述:
+ +
+

根据请求来源的 Referer 重定向请求, + 对每个 Referer 使用不同的目标。

+
+ +
解决方案:
+ +
+

以下规则集使用映射文件将每个 Referer 与重定向目标关联。

+ +
RewriteMap  deflector "txt:/path/to/deflector.map"
+
+RewriteCond "%{HTTP_REFERER}"              !=""
+RewriteCond "${deflector:%{HTTP_REFERER}}" =-
+RewriteRule "^"                            "%{HTTP_REFERER}" [R,L]
+
+RewriteCond "%{HTTP_REFERER}"              !=""
+RewriteCond "${deflector:%{HTTP_REFERER}|NOT-FOUND}" "!=NOT-FOUND"
+RewriteRule "^"                            "${deflector:%{HTTP_REFERER}}" [R,L]
+ + +

映射文件列出了每个 referer 的重定向目标, + 或者如果我们只想重定向回他们的来源地,则在映射中放置 "-":

+ +
##
+##  deflector.map
+##
+
+http://badguys.example.com/bad/index.html    -
+http://badguys.example.com/bad/index2.html   -
+http://badguys.example.com/bad/index3.html   http://somewhere.example.com/
+ + +
+
+ +
+
+

可用语言:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/advanced.html b/docs/manual/rewrite/advanced.html index 449418cd3c..5a176a4fd7 100644 --- a/docs/manual/rewrite/advanced.html +++ b/docs/manual/rewrite/advanced.html @@ -1,9 +1,33 @@ # GENERATED FROM XML -- DO NOT EDIT +URI: advanced.html.de +Content-Language: de +Content-type: text/html; charset=ISO-8859-1 + URI: advanced.html.en.utf8 Content-Language: en Content-type: text/html; charset=UTF-8 +URI: advanced.html.es.utf8 +Content-Language: es +Content-type: text/html; charset=UTF-8 + URI: advanced.html.fr.utf8 Content-Language: fr Content-type: text/html; charset=UTF-8 + +URI: advanced.html.ja.utf8 +Content-Language: ja +Content-type: text/html; charset=UTF-8 + +URI: advanced.html.ko.euc-kr +Content-Language: ko +Content-type: text/html; charset=EUC-KR + +URI: advanced.html.tr.utf8 +Content-Language: tr +Content-type: text/html; charset=UTF-8 + +URI: advanced.html.zh-cn.utf8 +Content-Language: zh-cn +Content-type: text/html; charset=UTF-8 diff --git a/docs/manual/rewrite/advanced.html.de b/docs/manual/rewrite/advanced.html.de new file mode 100644 index 0000000000..811f37a001 --- /dev/null +++ b/docs/manual/rewrite/advanced.html.de @@ -0,0 +1,374 @@ + + + + + +Fortgeschrittene Techniken mit mod_rewrite - Apache HTTP Server Version 2.5 + + + + + + + +
<-
+
+Apache > HTTP-Server > Dokumentation > Version 2.5 > Rewrite

Fortgeschrittene Techniken mit mod_rewrite

+
+

Verfügbare Sprachen:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ + +

Dieses Dokument ergänzt die mod_rewrite +Referenzdokumentation. Es bietet +einige fortgeschrittene Techniken zur Verwendung von mod_rewrite.

+ + + +
Beachten Sie, dass viele dieser Beispiele nicht unverändert in Ihrer +speziellen Serverkonfiguration funktionieren werden. Es ist daher wichtig, dass Sie +sie verstehen, anstatt die Beispiele einfach auszuschneiden und in Ihre +Konfiguration einzufügen.
+ +
+ +
top
+
+

URL-basiertes Sharding über mehrere Backends

+ + + +
+
Beschreibung:
+ +
+

Eine gängige Technik zur Verteilung der Serverlast oder des + Speicherplatzes wird als "Sharding" bezeichnet. + Bei Verwendung dieser Methode verwendet ein Frontend-Server die + URL, um Benutzer oder Objekte konsistent auf separate + Backend-Server zu "verteilen".

+
+ +
Lösung:
+ +
+

Eine Zuordnung von Benutzern zu Zielservern wird in externen + Map-Dateien gepflegt. Diese sehen wie folgt aus:

+ +

+user1 physical_host_of_user1
+user2 physical_host_of_user2
+# ... und so weiter +

+ +

Wir legen dies in eine map.users-to-hosts-Datei. Das + Ziel ist es, folgende Zuordnung vorzunehmen:

+ +

+/u/user1/anypath +

+ +

zu

+ +

+http://physical_host_of_user1/u/user/anypath +

+ +

Somit muss nicht jeder URL-Pfad auf jedem physischen Backend-Host + gültig sein. Der folgende Regelsatz erledigt dies für uns mit Hilfe der + Map-Dateien, wobei server0 ein Standardserver ist, der verwendet wird, + wenn ein Benutzer keinen Eintrag in der Map hat:

+ +
RewriteEngine on
+RewriteMap    users-to-hosts      "txt:/path/to/map.users-to-hosts"
+RewriteRule   "^/u/([^/]+)/?(.*)" "http://${users-to-hosts:$1|server0}/u/$1/$2"
+ +
+
+ +

Siehe die RewriteMap-Dokumentation + und das RewriteMap-HowTo + für weitere Informationen zur Syntax dieser Direktive.

+ +
top
+
+

Dynamische Inhaltsregenerierung

+ + + +
+
Beschreibung:
+ +
+

Wir möchten Inhalte dynamisch generieren, sie aber statisch + speichern, sobald sie einmal generiert wurden. Diese Regel prüft, + ob die statische Datei vorhanden ist, und generiert sie, falls + nicht. Die statischen Dateien können bei Bedarf regelmäßig + entfernt werden (z.B. per Cron) und werden bei Bedarf neu + generiert.

+
+ +
Lösung:
+ +
+ Dies wird durch den folgenden Regelsatz erreicht: + +
# This example is valid in per-directory context only
+RewriteCond "%{REQUEST_URI}"   !-U
+RewriteRule "^(.+)\.html$"     "/regenerate_page.cgi"   [PT,L]
+ + +

Der -U-Operator prüft, ob der Teststring + (in diesem Fall REQUEST_URI) eine gültige URL ist. Er + macht dies über eine Unteranfrage. Falls diese Unteranfrage fehlschlägt - + das heißt, die angeforderte Ressource existiert nicht - ruft diese + Regel das CGI-Programm /regenerate_page.cgi auf, das + die angeforderte Ressource generiert und im Dokumentenverzeichnis + speichert, sodass beim nächsten Aufruf eine statische Kopie + ausgeliefert werden kann.

+ +

Auf diese Weise können Dokumente, die selten aktualisiert werden, in + statischer Form ausgeliefert werden. Wenn Dokumente aktualisiert werden + müssen, können sie aus dem Dokumentenverzeichnis gelöscht werden, und sie + werden dann beim nächsten Aufruf erneut generiert.

+
+
+ +
top
+
+

Lastverteilung

+ + + +
+
Beschreibung:
+ +
+

Wir möchten die Last zufällig auf mehrere Server verteilen, + indem wir mod_rewrite verwenden.

+
+ +
Lösung:
+ +
+

Wir verwenden RewriteMap und eine Serverliste, + um dies zu erreichen.

+ +
RewriteEngine on
+RewriteMap  lb       "rnd:/path/to/serverlist.txt"
+RewriteRule "^/(.*)" "http://${lb:servers}/$1"     [P,L]
+ + +

serverlist.txt enthält eine Liste der Server:

+ +

+## serverlist.txt
+
+servers one.example.com|two.example.com|three.example.com
+

+ +

Wenn Sie möchten, dass ein bestimmter Server mehr Last als die +anderen erhält, fügen Sie ihn mehrmals zur Liste hinzu.

+ +
+ +
Diskussion
+
+

Apache wird mit einem Lastverteilungsmodul ausgeliefert - +mod_proxy_balancer - das wesentlich flexibler und +funktionsreicher ist als alles, was Sie mit mod_rewrite +zusammenstellen können.

+
+
+ +
top
+
+

Strukturierte Benutzerverzeichnisse

+ + + +
+
Beschreibung:
+ +
+

Einige Websites mit Tausenden von Benutzern verwenden ein + strukturiertes Heimatverzeichnis-Layout, d.h. jedes + Heimatverzeichnis befindet sich in einem Unterverzeichnis, das + (beispielsweise) mit dem ersten Zeichen des Benutzernamens beginnt. + So ist /~larry/anypath gleich + /home/l/larry/public_html/anypath, + während /~waldo/anypath gleich + /home/w/waldo/public_html/anypath ist.

+
+ +
Lösung:
+ +
+

Wir verwenden den folgenden Regelsatz, um die Tilde-URLs + in das obige Layout umzusetzen.

+ +
RewriteEngine on
+RewriteRule   "^/~(([a-z])[a-z0-9]+)(.*)"  "/home/$2/$1/public_html$3"
+ +
+
+ +
top
+
+

Umleitung von Ankern

+ + + +
+
Beschreibung:
+ +
+

Standardmäßig funktioniert die Umleitung zu einem HTML-Anker nicht, + da mod_rewrite das #-Zeichen maskiert und + es in %23 umwandelt. Dies wiederum unterbricht die + Umleitung.

+
+ +
Lösung:
+ +
+

Verwenden Sie das [NE]-Flag in der + RewriteRule. NE steht für No Escape (Nicht maskieren). +

+
+ +
Diskussion:
+
Diese Technik funktioniert natürlich auch mit anderen + Sonderzeichen, die mod_rewrite standardmäßig URL-kodiert.
+
+ +
top
+
+

Zeitabhängiges Umschreiben

+ + + +
+
Beschreibung:
+ +
+

Wir möchten mod_rewrite verwenden, um je nach Tageszeit + unterschiedliche Inhalte auszuliefern.

+
+ +
Lösung:
+ +
+

Es gibt viele Variablen namens TIME_xxx + für Rewrite-Bedingungen. In Verbindung mit den speziellen + lexikographischen Vergleichsmustern <STRING, + >STRING und =STRING können wir + zeitabhängige Umleitungen durchführen:

+ +
RewriteEngine on
+RewriteCond   "%{TIME_HOUR}%{TIME_MIN}" >0700
+RewriteCond   "%{TIME_HOUR}%{TIME_MIN}" <1900
+RewriteRule   "^foo\.html$"             "foo.day.html" [L]
+RewriteRule   "^foo\.html$"             "foo.night.html"
+ + +

Dies liefert den Inhalt von foo.day.html + unter der URL foo.html von + 07:01-18:59 und zur restlichen Zeit den + Inhalt von foo.night.html.

+ +
mod_cache, Zwischenproxys + und Browser können jeweils Antworten zwischenspeichern und dazu + führen, dass eine der beiden Seiten außerhalb des konfigurierten + Zeitfensters angezeigt wird. + mod_expires kann verwendet werden, um diesen + Effekt zu kontrollieren. Es ist natürlich viel besser, die + Inhalte einfach dynamisch auszuliefern und basierend auf der + Tageszeit anzupassen.
+ +
+
+ +
top
+
+

Umgebungsvariablen basierend auf URL-Teilen setzen

+ + + +
+
Beschreibung:
+ +
+

Manchmal möchten wir eine Art Status beibehalten, wenn wir + ein Umschreiben durchführen. Beispielsweise möchten Sie sich + merken, dass dieses Umschreiben stattgefunden hat, damit Sie + später prüfen können, ob eine Anfrage über dieses Umschreiben + kam. Eine Möglichkeit dafür ist das Setzen einer + Umgebungsvariable.

+
+ +
Lösung:
+ +
+

Verwenden Sie das [E]-Flag, um eine Umgebungsvariable zu setzen.

+ +
RewriteEngine on
+RewriteRule   "^/horse/(.*)"   "/pony/$1" [E=rewritten:1]
+ + +

Später in Ihrem Regelsatz können Sie diese Umgebungsvariable + mit einer RewriteCond prüfen:

+ +
RewriteCond "%{ENV:rewritten}"  =1
+ + +

Beachten Sie, dass Umgebungsvariablen eine externe Umleitung nicht + überleben. Sie könnten stattdessen das [CO]-Flag verwenden, um ein + Cookie zu setzen. Für Verzeichniskontext- und htaccess-Umschreibungen, + bei denen die endgültige Ersetzung als interne Umleitung verarbeitet + wird, werden Umgebungsvariablen aus der vorherigen Runde des + Umschreibens mit dem Präfix "REDIRECT_" versehen.

+ +
+
+ +
+
+

Verfügbare Sprachen:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/advanced.html.en.utf8 b/docs/manual/rewrite/advanced.html.en.utf8 index 9146ed35e3..3ead84e351 100644 --- a/docs/manual/rewrite/advanced.html.en.utf8 +++ b/docs/manual/rewrite/advanced.html.en.utf8 @@ -23,8 +23,14 @@
Apache > HTTP Server > Documentation > Version 2.5 > Rewrite

Advanced Techniques with mod_rewrite

-

Available Languages:  en  | - fr 

+

Available Languages:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

@@ -343,8 +349,14 @@ RewriteRule "^/horse/(.*)" "/pony/$1" [E=rewritten:1]
-

Available Languages:  en  | - fr 

+

Available Languages:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+ + + +
<-
+
+Apache > Servidor HTTP > Documentación > Versión 2.5 > Rewrite

Técnicas avanzadas con mod_rewrite

+
+

Idiomas disponibles:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ + +

Este documento complementa la mod_rewrite +documentación de referencia. Proporciona +algunas técnicas avanzadas usando mod_rewrite.

+ + + +
Tenga en cuenta que muchos de estos ejemplos no funcionarán sin cambios en su +configuración particular del servidor, por lo que es importante que los +entienda, en lugar de simplemente copiar y pegar los ejemplos en su +configuración.
+ +
+ +
top
+
+

Fragmentación basada en URL entre múltiples backends

+ + + +
+
Descripción:
+ +
+

Una técnica común para distribuir la carga del + servidor o el espacio de almacenamiento se llama "fragmentación" (sharding). + Al usar este método, un servidor front-end usará la + URL para "fragmentar" consistentemente usuarios u objetos a servidores + backend separados.

+
+ +
Solución:
+ +
+

Se mantiene un mapeo, de usuarios a servidores destino, en + archivos de mapa externos. Tienen este aspecto:

+ +

+user1 physical_host_of_user1
+user2 physical_host_of_user2
+# ... y así sucesivamente +

+ +

Colocamos esto en un archivo map.users-to-hosts. El + objetivo es mapear;

+ +

+/u/user1/anypath +

+ +

a

+ +

+http://physical_host_of_user1/u/user/anypath +

+ +

por lo que no es necesario que cada ruta URL sea válida en cada host físico + backend. El siguiente conjunto de reglas hace esto por nosotros con la ayuda de los + archivos de mapa, asumiendo que server0 es un servidor predeterminado que se usará si + un usuario no tiene entrada en el mapa:

+ +
RewriteEngine on
+RewriteMap    users-to-hosts      "txt:/path/to/map.users-to-hosts"
+RewriteRule   "^/u/([^/]+)/?(.*)" "http://${users-to-hosts:$1|server0}/u/$1/$2"
+ +
+
+ +

Consulte la documentación de la directiva RewriteMap + y el Cómo usar RewriteMap + para más discusión de la sintaxis de esta directiva.

+ +
top
+
+

Regeneración de Contenido sobre la marcha

+ + + +
+
Descripción:
+ +
+

Deseamos generar contenido dinámicamente, pero almacenarlo + estáticamente una vez que se ha generado. Esta regla verificará la + existencia del archivo estático, y si no está allí, lo generará. + Los archivos estáticos pueden eliminarse periódicamente, si se desea (digamos, + mediante cron) y se regenerarán bajo demanda.

+
+ +
Solución:
+ +
+ Esto se hace mediante el siguiente conjunto de reglas: + +
# This example is valid in per-directory context only
+RewriteCond "%{REQUEST_URI}"   !-U
+RewriteRule "^(.+)\.html$"     "/regenerate_page.cgi"   [PT,L]
+ + +

El operador -U determina si la cadena de prueba + (en este caso, REQUEST_URI) es una URL válida. Lo hace + mediante una sub-solicitud. En el caso de que esta sub-solicitud falle - + es decir, el recurso solicitado no existe - esta regla invoca + el programa CGI /regenerate_page.cgi, que genera + el recurso solicitado y lo guarda en el directorio de documentos, de modo + que la próxima vez que se solicite, se pueda servir una copia estática.

+ +

De esta manera, documentos que se actualizan con poca frecuencia pueden servirse en + forma estática. Si los documentos necesitan actualizarse, pueden eliminarse + del directorio de documentos, y se regenerarán la + próxima vez que se soliciten.

+
+
+ +
top
+
+

Balanceo de Carga

+ + + +
+
Descripción:
+ +
+

Deseamos distribuir aleatoriamente la carga entre varios servidores + usando mod_rewrite.

+
+ +
Solución:
+ +
+

Usaremos RewriteMap y una lista de servidores + para lograr esto.

+ +
RewriteEngine on
+RewriteMap  lb       "rnd:/path/to/serverlist.txt"
+RewriteRule "^/(.*)" "http://${lb:servers}/$1"     [P,L]
+ + +

serverlist.txt contendrá una lista de los servidores:

+ +

+## serverlist.txt
+
+servers one.example.com|two.example.com|three.example.com
+

+ +

Si desea que un servidor particular reciba más carga que los +otros, agreguelo más veces a la lista.

+ +
+ +
Discusión
+
+

Apache viene con un módulo de balanceo de carga - +mod_proxy_balancer - que es mucho más flexible y +con más funcionalidades que cualquier cosa que pueda construir usando mod_rewrite.

+
+
+ +
top
+
+

Directorios de Usuario Estructurados

+ + + +
+
Descripción:
+ +
+

Algunos sitios con miles de usuarios usan una + disposición de directorio personal estructurada, es decir, cada directorio personal está en un + subdirectorio que comienza (por ejemplo) con el primer + carácter del nombre de usuario. Así, /~larry/anypath + es /home/l/larry/public_html/anypath + mientras que /~waldo/anypath es + /home/w/waldo/public_html/anypath.

+
+ +
Solución:
+ +
+

Usamos el siguiente conjunto de reglas para expandir las URLs de tilde + a la disposición anterior.

+ +
RewriteEngine on
+RewriteRule   "^/~(([a-z])[a-z0-9]+)(.*)"  "/home/$2/$1/public_html$3"
+ +
+
+ +
top
+
+

Redireccionando Anclas

+ + + +
+
Descripción:
+ +
+

Por defecto, redirigir a un ancla HTML no funciona, + porque mod_rewrite escapa el carácter #, + convirtiéndolo en %23. Esto, a su vez, rompe la + redirección.

+
+ +
Solución:
+ +
+

Use la bandera [NE] en la + RewriteRule. NE significa No Escapar. +

+
+ +
Discusión:
+
Esta técnica por supuesto también funcionará con otros + caracteres especiales que mod_rewrite, por defecto, codifica en URL.
+
+ +
top
+
+

Reescritura Dependiente del Tiempo

+ + + +
+
Descripción:
+ +
+

Deseamos usar mod_rewrite para servir contenido diferente basado en + la hora del día.

+
+ +
Solución:
+ +
+

Hay muchas variables llamadas TIME_xxx + para condiciones de reescritura. En conjunto con los patrones + especiales de comparación lexicográfica <STRING, + >STRING y =STRING podemos + hacer redirecciones dependientes del tiempo:

+ +
RewriteEngine on
+RewriteCond   "%{TIME_HOUR}%{TIME_MIN}" >0700
+RewriteCond   "%{TIME_HOUR}%{TIME_MIN}" <1900
+RewriteRule   "^foo\.html$"             "foo.day.html" [L]
+RewriteRule   "^foo\.html$"             "foo.night.html"
+ + +

Esto proporciona el contenido de foo.day.html + bajo la URL foo.html de + 07:01-18:59 y en el tiempo restante el + contenido de foo.night.html.

+ +
mod_cache, proxies intermedios + y navegadores pueden cada uno almacenar en caché las respuestas y causar que cualquiera de las páginas se + muestre fuera de la ventana de tiempo configurada. + Se puede usar mod_expires para controlar este + efecto. Por supuesto, es mucho mejor simplemente servir el + contenido dinámicamente y personalizarlo basándose en la hora del día.
+ +
+
+ +
top
+
+

Establecer Variables de Entorno Basadas en Partes de la URL

+ + + +
+
Descripción:
+ +
+

A veces, queremos mantener algún tipo de estado cuando + realizamos una reescritura. Por ejemplo, desea tomar nota de que + ha realizado esa reescritura, para poder verificar más tarde si una + solicitud llegó a través de esa reescritura. Una forma de hacer esto es estableciendo una + variable de entorno.

+
+ +
Solución:
+ +
+

Use la bandera [E] para establecer una variable de entorno.

+ +
RewriteEngine on
+RewriteRule   "^/horse/(.*)"   "/pony/$1" [E=rewritten:1]
+ + +

Más adelante en su conjunto de reglas puede verificar esta variable + de entorno usando una RewriteCond:

+ +
RewriteCond "%{ENV:rewritten}"  =1
+ + +

Tenga en cuenta que las variables de entorno no sobreviven a una + redirección externa. Podría considerar usar la bandera [CO] para establecer una + cookie. Para reescrituras en contexto per-directorio y htaccess, donde la sustitución + final se procesa como una redirección interna, las variables + de entorno de la ronda anterior de reescritura se prefijan con + "REDIRECT_".

+ +
+
+ +
+
+

Idiomas disponibles:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/advanced.html.fr.utf8 b/docs/manual/rewrite/advanced.html.fr.utf8 index 52817eac43..881fcd0669 100644 --- a/docs/manual/rewrite/advanced.html.fr.utf8 +++ b/docs/manual/rewrite/advanced.html.fr.utf8 @@ -23,8 +23,14 @@
Apache > Serveur HTTP > Documentation > Version 2.5 > Rewrite

Techniques avancées avec mod_rewrite

-

Langues Disponibles:  en  | - fr 

+

Langues Disponibles:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

@@ -363,8 +369,14 @@ RewriteRule "^/cheval/(.*)" "/poney/$1" [E=rewritten:1]
-

Langues Disponibles:  en  | - fr 

+

Langues Disponibles:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+ + + +
<-
+

mod_rewrite の高度なテクニック

+
+

翻訳済み言語:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ + +

このドキュメントは mod_rewrite +リファレンスドキュメントを補足するものです。 +mod_rewrite を使用したいくつかの高度なテクニックを提供します。

+ + + +
これらの例の多くは、特定のサーバ設定ではそのまま +動作しないことに注意してください。そのため、単にコピー&ペーストするのではなく、 +内容を理解することが重要です。
+ +
+ +
top
+
+

URL ベースの複数バックエンドへのシャーディング

+ + + +
+
説明:
+ +
+

サーバ負荷やストレージスペースの負担を分散するための + 一般的なテクニックは「シャーディング」と呼ばれます。 + この方法を使用すると、フロントエンドサーバは URL を使用して + ユーザやオブジェクトを別々のバックエンドサーバに一貫して + 「シャード」します。

+
+ +
解決方法:
+ +
+

ユーザからターゲットサーバへのマッピングが外部マップファイルに + 保持されています。次のような形式です:

+ +

+user1 physical_host_of_user1
+user2 physical_host_of_user2
+# ... 以下同様 +

+ +

これを map.users-to-hosts ファイルに入れます。目的は + 以下をマッピングすることです:

+ +

+/u/user1/anypath +

+ +

を以下にマッピング:

+ +

+http://physical_host_of_user1/u/user/anypath +

+ +

このようにすると、すべての URL パスがすべてのバックエンド物理 + ホストで有効である必要はありません。以下のルールセットは、 + マップファイルの助けを借りてこれを実現します。server0 は、 + ユーザがマップにエントリを持たない場合に使用されるデフォルト + サーバとして想定しています:

+ +
RewriteEngine on
+RewriteMap    users-to-hosts      "txt:/path/to/map.users-to-hosts"
+RewriteRule   "^/u/([^/]+)/?(.*)" "http://${users-to-hosts:$1|server0}/u/$1/$2"
+ +
+
+ +

このディレクティブの構文の詳細については、 + RewriteMap + ドキュメントと RewriteMap ハウツー + を参照してください。

+ +
top
+
+

オンザフライのコンテンツ再生成

+ + + +
+
説明:
+ +
+

コンテンツを動的に生成したいが、一度生成したら静的に + 保存したいとします。このルールは静的ファイルの存在を確認し、 + 存在しない場合は生成します。静的ファイルは必要に応じて + (例えば cron で) 定期的に削除でき、要求に応じて再生成 + されます。

+
+ +
解決方法:
+ +
+ これは以下のルールセットで実現されます: + +
# This example is valid in per-directory context only
+RewriteCond "%{REQUEST_URI}"   !-U
+RewriteRule "^(.+)\.html$"     "/regenerate_page.cgi"   [PT,L]
+ + +

-U 演算子は、テスト文字列 (この場合は + REQUEST_URI) が有効な URL かどうかを判定します。 + これはサブリクエストを通じて行われます。このサブリクエストが + 失敗した場合、つまりリクエストされたリソースが存在しない場合、 + このルールは CGI プログラム /regenerate_page.cgi + を呼び出し、リクエストされたリソースを生成してドキュメント + ディレクトリに保存します。これにより、次回リクエストされたときに + 静的コピーを提供できます。

+ +

このようにして、更新頻度の低いドキュメントを静的形式で + 提供できます。ドキュメントを更新する必要がある場合は、 + ドキュメントディレクトリから削除すれば、次回リクエストされたときに + 再生成されます。

+
+
+ +
top
+
+

ロードバランシング

+ + + +
+
説明:
+ +
+

mod_rewrite を使用して、複数のサーバに + ランダムに負荷を分散したいとします。

+
+ +
解決方法:
+ +
+

これを実現するために RewriteMap とサーバの + リストを使用します。

+ +
RewriteEngine on
+RewriteMap  lb       "rnd:/path/to/serverlist.txt"
+RewriteRule "^/(.*)" "http://${lb:servers}/$1"     [P,L]
+ + +

serverlist.txt にはサーバのリストが含まれます:

+ +

+## serverlist.txt
+
+servers one.example.com|two.example.com|three.example.com
+

+ +

特定のサーバにより多くの負荷を割り当てたい場合は、 +リストにそのサーバを複数回追加してください。

+ +
+ +
議論
+
+

Apache にはロードバランシングモジュール - +mod_proxy_balancer - が付属しており、 +mod_rewrite で構築できるものよりもはるかに柔軟で +機能豊富です。

+
+
+ +
top
+
+

構造化ユーザディレクトリ

+ + + +
+
説明:
+ +
+

数千人のユーザを持つサイトの中には、構造化されたホームディレクトリ + レイアウトを使用するものがあります。つまり、各ホームディレクトリは + ユーザ名の最初の文字で始まるサブディレクトリにあります。例えば、 + /~larry/anypath は + /home/l/larry/public_html/anypath + であり、/~waldo/anypath は + /home/w/waldo/public_html/anypath + です。

+
+ +
解決方法:
+ +
+

上記のレイアウトにチルダ URL を展開するために、以下のルールセットを + 使用します。

+ +
RewriteEngine on
+RewriteRule   "^/~(([a-z])[a-z0-9]+)(.*)"  "/home/$2/$1/public_html$3"
+ +
+
+ +
top
+
+

アンカーのリダイレクト

+ + + +
+
説明:
+ +
+

デフォルトでは、HTML アンカーへのリダイレクトは機能しません。 + mod_rewrite が # 文字をエスケープして + %23 に変換するためです。これによりリダイレクトが + 壊れます。

+
+ +
解決方法:
+ +
+

RewriteRule で [NE] フラグを + 使用します。NE は No Escape (エスケープしない) の略です。 +

+
+ +
議論:
+
このテクニックは、mod_rewrite がデフォルトで + URL エンコードする他の特殊文字にも適用できます。
+
+ +
top
+
+

時間に依存する書き換え

+ + + +
+
説明:
+ +
+

mod_rewrite を使用して、時間帯に基づいて + 異なるコンテンツを提供したいとします。

+
+ +
解決方法:
+ +
+

書き換え条件に使用できる TIME_xxx という名前の + 変数が多数あります。特殊な辞書順比較パターン + <STRING、>STRING、 + =STRING と組み合わせることで、時間に依存する + リダイレクトを行えます:

+ +
RewriteEngine on
+RewriteCond   "%{TIME_HOUR}%{TIME_MIN}" >0700
+RewriteCond   "%{TIME_HOUR}%{TIME_MIN}" <1900
+RewriteRule   "^foo\.html$"             "foo.day.html" [L]
+RewriteRule   "^foo\.html$"             "foo.night.html"
+ + +

これにより、URL foo.html で + 07:01-18:59 の間は foo.day.html の + コンテンツを、残りの時間帯は foo.night.html の + コンテンツを提供します。

+ +
mod_cache、中間プロキシ、 + およびブラウザはそれぞれレスポンスをキャッシュし、設定された + 時間枠外にいずれかのページが表示される可能性があります。 + mod_expires を使用してこの影響を制御できます。 + もちろん、コンテンツを動的に提供し、時間帯に基づいて + カスタマイズする方がはるかに良いでしょう。
+ +
+
+ +
top
+
+

URL の部分に基づく環境変数の設定

+ + + +
+
説明:
+ +
+

書き換えを実行する際に何らかの状態を維持したい場合が + あります。例えば、書き換えを行ったことをメモし、後でリクエストが + その書き換えを経由したかどうかを確認したいとします。これを行う + 1 つの方法は、環境変数を設定することです。

+
+ +
解決方法:
+ +
+

[E] フラグを使用して環境変数を設定します。

+ +
RewriteEngine on
+RewriteRule   "^/horse/(.*)"   "/pony/$1" [E=rewritten:1]
+ + +

後のルールセットで RewriteCond を使用してこの環境変数を + 確認できます:

+ +
RewriteCond "%{ENV:rewritten}"  =1
+ + +

環境変数は外部リダイレクトでは保持されないことに注意 + してください。[CO] フラグを使用して cookie を設定することを + 検討するとよいでしょう。ディレクトリ単位および htaccess の + 書き換えでは、最終的な置換が内部リダイレクトとして処理されるため、 + 前回の書き換えラウンドの環境変数には "REDIRECT_" がプレフィックスとして + 付きます。

+ +
+
+ +
+
+

翻訳済み言語:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/advanced.html.ko.euc-kr b/docs/manual/rewrite/advanced.html.ko.euc-kr new file mode 100644 index 0000000000..43f34f103d --- /dev/null +++ b/docs/manual/rewrite/advanced.html.ko.euc-kr @@ -0,0 +1,367 @@ + + + + + +mod_rewrite �� 기� - Apache HTTP Server Version 2.5 + + + + + + + +
<-
+

mod_rewrite �� 기�

+
+

°¡´ÉÇÑ ¾ð¾î:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ + +

�� 문ì���� mod_rewrite +참조 문ì��ë¥� ë³´ì¶©�©ë����. +mod_rewriteë¥� �¬ì�©í�� ëª� ê°�ì§� ê³�ê¸� 기ì���� +��ê³µí�©ë����.

+ +
�� ������ ì¤� ë§��� ê²��� �¹ì�� ��ë²� �¤ì������ +ê·¸ë��ë¡� ������ì§� ���� �� ���¼ë��ë¡�, �¨ì���� ����ë¥� ë³µì�¬í���� +�¤ì���� ë¶��¬ë�£ê¸°ë³´ë�¤ë�� �´í�´í���� ê²��� ì¤����©ë����.
+ +
+ +
top
+
+

�¬ë�� ë°±ì������ ���� URL 기ë� �¤ë��

+ + + +
+
�¤ë�:
+ +
+

��ë²� ë¶����� ���� ê³µê��� ë¶��°í���� �¼ë����� 기ì���� + "�¤ë��"�´ë�¼ê� �©ë����. �� ë°©ë��� �¬ì�©í�� �� ��ë¡��¸ì���� + ��ë²��� URL�� �¬ì�©í���� �¬ì�©ì�� ���� ê°�ì²´ë�� ë³����� + ë°±ì���� ��ë²��� �¼ê���ê²� "�¤ë��"�©ë����.

+
+ +
�´ê²°ì±�:
+ +
+

�¬ì�©ì������ ���� ��ë²�ë¡��� 매í���� �¸ë� ë§� ���¼ì�� + ��ì§��©ë����. �¤ì��ê³� ê°��� ����������:

+ +

+user1 physical_host_of_user1
+user2 physical_host_of_user2
+# ... �±ë�� +

+ +

�´ê��� map.users-to-hosts ���¼ì�� �£ì�µë����. + 목ì���� �¤ì���� 매í������ ê²�������;

+ +

+/u/user1/anypath +

+ +

���� ê²��� �¤ì���¼ë�:

+ +

+http://physical_host_of_user1/u/user/anypath +

+ +

�°ë�¼ì�� 모ë�� URL ê²½ë�ê°� 모ë�� ë°±ì���� 물리�� �¸ì�¤í�¸ì���� + ���¨í�� ����ê°� ���µë����. �¤ì�� ê·�ì¹� �¸í�¸ë�� ë§� ���¼ì�� + �����¼ë� �´ë�� ������ë©�, �¬ì�©ì��ê°� ë§µì�� ��목ì�� ���� + ê²½ì�� server0�� 기본 ��ë²�ë¡� �¬ì�©ë�©ë����:

+ +
RewriteEngine on
+RewriteMap    users-to-hosts      "txt:/path/to/map.users-to-hosts"
+RewriteRule   "^/u/([^/]+)/?(.*)" "http://${users-to-hosts:$1|server0}/u/$1/$2"
+ +
+
+ +

�� ì§����´ì�� 구문�� ���� ���¸í�� �´ì�©ì�� + RewriteMap + 문ì���� RewriteMap �¬ì�©ë��� + 참조��������.

+ +
top
+
+

�¤ì��ê°� ì½���ì¸� �¬ì����

+ + + +
+
�¤ë�:
+ +
+

ì½���ì¸�ë¥� �����¼ë� ���±í����, �� ë²� ���±ë��ë©� + �����¼ë� ���¥í��ê³��� �©ë����. �� ê·�ì¹��� ���� ���¼ì�� + ì¡´ì�¬ë�� ���¸í��ê³�, ���¼ë©´ ���±í�©ë����. ���� ���¼ì�� + ������ ê²½ì�� (��ë¥� �¤ì�� cron�� �µí��) 주기���¼ë� + ��ê±°í�� �� ���¼ë©°, ������ �°ë�� �¬ì���±ë�©ë����.

+
+ +
�´ê²°ì±�:
+ +
+ �´ë�� �¤ì�� ê·�ì¹� �¸í�¸ë� �����©ë����: + +
# This example is valid in per-directory context only
+RewriteCond "%{REQUEST_URI}"   !-U
+RewriteRule "^(.+)\.html$"     "/regenerate_page.cgi"   [PT,L]
+ + +

-U �°ì�°ì���� ���¤í�� 문ì����(�� ê²½ì�� + REQUEST_URI)�� ���¨í�� URL�¸ì� + ���¨í�©ë����. �´ë�� ��ë¸���ì²��� �µí�� �����©ë����. + �� ��ë¸���ì²��� �¤í�¨í��ë©� - ì¦�, ��ì²��� ������ ì¡´ì�¬í��ì§� + ���¼ë©´ - �� ê·�ì¹��� CGI ��ë¡�ê·¸ë�� + /regenerate_page.cgië¥� �¸ì����� + ��ì²��� ������ ���±í��ê³� 문ì�� ������리ì�� ���¥í��ë¯�ë¡�, + �¤ì���� ��ì²��� �� ���� ë³µì�¬ë³¸�� ��ê³µí�� �� ���µë����.

+ +

�� ë°©ì���¼ë� ��ì£� ���°ì�´í�¸ë��ì§� ���� 문ì��ë¥� ���� + ����ë¡� ��ê³µí�� �� ���µë����. 문ì��ë¥� ��ë¡�ê³�침í�´ì�� ���� + ê²½ì�� 문ì�� ������리ì���� ������ �� ���¼ë©°, �¤ì���� + ��ì²��� �� �¬ì���±ë�©ë����.

+
+
+ +
top
+
+

��� ���

+ + + +
+
�¤ë�:
+ +
+

mod_rewriteë¥� �¬ì�©í���� �¬ë�� ��ë²��� + 무ì����ë¡� ë¶���ë¥� ë¶��°í��ê³��� �©ë����.

+
+ +
�´ê²°ì±�:
+ +
+

RewriteMapê³� + ��ë²� 목ë��� �¬ì�©í���� �´ë�� �����©ë����.

+ +
RewriteEngine on
+RewriteMap  lb       "rnd:/path/to/serverlist.txt"
+RewriteRule "^/(.*)" "http://${lb:servers}/$1"     [P,L]
+ + +

serverlist.txt���� ��ë²� 목ë��� �¬í�¨ë�©ë����:

+ +

+## serverlist.txt
+
+servers one.example.com|two.example.com|three.example.com
+

+ +

�¹ì�� ��ë²�ê°� �¤ë¥¸ ��ë²�ë³´ë�� �� ë§��� ë¶���ë¥� ë°���ë¡� ���¤ë©´ +목ë��� �´ë�� ��ë²�ë¥� �� ë§��� ì¶�ê°���������.

+ +
+ +
���
+
+

Apache���� ë¶��� ë¶��� 모ë���� +mod_proxy_balancerê°� �¬í�¨ë���� ���¼ë©°, +�´ê��� mod_rewriteë¥� �¬ì�©í���� ì¡°í�©í�� �� ���� +�´ë�� ê²�ë³´ë�� �¨ì�� �� ���°í��ê³� 기ë�¥ì�� ��ë¶��©ë����.

+
+
+ +
top
+
+

구조���� �¬ì�©ì�� ������ë¦�

+ + + +
+
�¤ë�:
+ +
+

��ì²� ëª��� �¬ì�©ì��ê°� ���� �¼ë� �¬ì�´í�¸ë�� 구조���� + �� ������ë¦� ���´ì������ �¬ì�©í�©ë����. ì¦�, ê°� + �� ������리ë�� �¬ì�©ì�� �´ë��� ì²� ë²�ì§� 문ì��ë¡� �������� + ���� ������리ì�� ���µë����. ��ë¥� �¤ì�� + /~larry/anypath�� + /home/l/larry/public_html/anypath�´ê� + /~waldo/anypath�� + /home/w/waldo/public_html/anypath������.

+
+ +
�´ê²°ì±�:
+ +
+

���� ���´ì�����¼ë� 물결�� URL�� ���¥í��ê¸� ���� + �¤ì�� ê·�ì¹� �¸í�¸ë�� �¬ì�©í�©ë����.

+ +
RewriteEngine on
+RewriteRule   "^/~(([a-z])[a-z0-9]+)(.*)"  "/home/$2/$1/public_html$3"
+ +
+
+ +
top
+
+

�µì»¤ 리ë�¤ì�´ë����

+ + + +
+
�¤ë�:
+ +
+

기본���¼ë� HTML �µì»¤ë¡��� 리ë�¤ì�´ë���¸ë�� ������ì§� + ���µë����. mod_rewriteê°� # + 문ì��ë¥� �´ì�¤ì��´í������ %23�¼ë� ë³�����ê¸� + ��문ì������. �´ë� �¸í�� 리ë�¤ì�´ë������ ì¤��¨ë�©ë����.

+
+ +
�´ê²°ì±�:
+ +
+

RewriteRule�� [NE] + ����ê·¸ë�� �¬ì�©í�©ë����. NE�� No Escapeë¥� ��미í�©ë����.

+
+ +
���:
+
�� 기ì���� mod_rewriteê°� 기본���¼ë� + URL �¸ì��©í���� �¤ë¥¸ �¹ì�� 문ì������ 물ë� ���©ë�©ë����.
+
+ +
top
+
+

��ê°� 기ë� �¬ì����

+ + + +
+
�¤ë�:
+ +
+

mod_rewriteë¥� �¬ì�©í���� ��ê°����� �°ë�� + �¤ë¥¸ ì½���ì¸�ë¥� ��ê³µí��ê³��� �©ë����.

+
+ +
�´ê²°ì±�:
+ +
+

�¬ì���� ì¡°ê±´�� �¬ì�©í�� �� ���� TIME_xxx�¼ë�� + ë§��� ë³���ê°� ���µë����. �¹ì�� �¬ì���� ë¹�êµ� �¨í�� + <STRING, >STRING, + =STRINGê³� �¨ê� ��ê°� 기ë� 리ë�¤ì�´ë���¸ë�� + ������ �� ���µë����:

+ +
RewriteEngine on
+RewriteCond   "%{TIME_HOUR}%{TIME_MIN}" >0700
+RewriteCond   "%{TIME_HOUR}%{TIME_MIN}" <1900
+RewriteRule   "^foo\.html$"             "foo.day.html" [L]
+RewriteRule   "^foo\.html$"             "foo.night.html"
+ + +

�´ê��� 07:01-18:59 �¬ì�´ì���� URL + foo.html ���� foo.day.html�� + ì½���ì¸�ë¥� ��ê³µí��ê³�, ��머ì� ��ê°����� + foo.night.html�� ì½���ì¸�ë¥� ��ê³µí�©ë����.

+ +
mod_cache, ì¤�ê°� ��ë¡��� + ë°� ë¸��¼ì�°ì���� ê°�ê°� ���µì�� ìº����� �� ���¼ë©°, 구ì�±ë�� + ��ê°� ì°� ë°����� �´ë�� ìª� ���´ì��� ������ �� ���µë����. + mod_expiresë¥� �¬ì�©í���� �� �¨ê³¼ë¥� + ���´í�� �� ���µë����. 물ë� ì½���ì¸�ë¥� �����¼ë� ��ê³µí��ê³� + ��ê°����� �°ë�� �¬ì�©ì�� �������� ê²��� �¨ì�� ì¢��µë����.
+ +
+
+ +
top
+
+

URL ë¶�ë¶��� �°ë¥¸ ��ê²� ë³��� �¤ì��

+ + + +
+
�¤ë�:
+ +
+

����ë¡� �¬ì���±ì�� ������ �� �´ë�� ì¢�ë¥��� ����ë¥� + ��ì§���ê³� �¶ì�� �� ���µë����. ��ë¥� �¤ì��, �´ë�� �¬ì���±ì�� + �������¤ë�� ê²��� 기ë����� ��ì¤��� ��ì²��� �´ë�� �¬ì���±ì�� + �µí�� ����ì§� ���¸í��ê³� �¶ì�� �� ���µë����. �´ë�� �������� + �� ê°�ì§� ë°©ë��� ��ê²� ë³���ë¥� �¤ì������ ê²�������.

+
+ +
�´ê²°ì±�:
+ +
+

[E] ����ê·¸ë�� �¬ì�©í���� ��ê²� ë³���ë¥� �¤ì���©ë����.

+ +
RewriteEngine on
+RewriteRule   "^/horse/(.*)"   "/pony/$1" [E=rewritten:1]
+ + +

��ì¤��� ê·�ì¹� �¸í�¸ì���� RewriteCondë¥� �¬ì�©í���� + �� ��ê²� ë³���ë¥� ���¸í�� �� ���µë����:

+ +
RewriteCond "%{ENV:rewritten}"  =1
+ + +

��ê²� ë³����� �¸ë� 리ë�¤ì�´ë���¸ì���� ��ì§���ì§� �����¤ë�� + ���� ������������. ì¿��¤ë�� �¤ì�����¤ë©´ [CO] ����ê·¸ë�� + �¬ì�©í���� ê²��� ê³��¤í�� �� ���µë����. ������리ë� ë°� + htaccess �¬ì���±ì���� ìµ�ì¢� ì¹����� �´ë� 리ë�¤ì�´ë���¸ë� + ì²�리ë���� ê²½ì��, �´ì�� �¼ì�´ë���� �¬ì���±ì���� �� ��ê²� ë³����� + "REDIRECT_" �����¬ê� ë¶��µë����.

+ +
+
+ +
+
+

°¡´ÉÇÑ ¾ð¾î:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/advanced.html.tr.utf8 b/docs/manual/rewrite/advanced.html.tr.utf8 new file mode 100644 index 0000000000..6385b57bfa --- /dev/null +++ b/docs/manual/rewrite/advanced.html.tr.utf8 @@ -0,0 +1,371 @@ + + + + + +mod_rewrite ile İleri Teknikler - Apache HTTP Sunucusu Sürüm 2.5 + + + + + + + +
<-
+

mod_rewrite ile İleri Teknikler

+
+

Mevcut Diller:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ + +

Bu belge, mod_rewrite +başvuru belgelerini tamamlar. +mod_rewrite kullanarak birkaç ileri teknik sunar.

+ + + +
Bu örneklerin birçoğunun sizin sunucu yapılandırmanızda +değişiklik yapılmadan çalışmayacağını unutmayın; bu nedenle örnekleri +yapılandırmanıza kopyalayıp yapıştırmak yerine anlamanız +önemlidir.
+ +
+ +
top
+
+

Birden Fazla Arka Uç Arasında URL Tabanlı Parçalama

+ + + +
+
Açıklama:
+ +
+

Sunucu yükünü veya depolama alanını dağıtmak için yaygın bir + teknik "parçalama" (sharding) olarak adlandırılır. Bu yöntem + kullanıldığında, bir ön uç sunucu kullanıcıları veya nesneleri + tutarlı bir şekilde ayrı arka uç sunuculara "parçalamak" için + URL'yi kullanır.

+
+ +
Çözüm:
+ +
+

Kullanıcılardan hedef sunuculara bir eşleme, harici eşlem + dosyalarında tutulur. Şöyle görünürler:

+ +

+user1 physical_host_of_user1
+user2 physical_host_of_user2
+# ... ve böyle devam eder +

+ +

Bunu bir map.users-to-hosts dosyasına koyarız. Amaç + şunu eşlemektir;

+ +

+/u/user1/anypath +

+ +

buna

+ +

+http://physical_host_of_user1/u/user/anypath +

+ +

böylece her URL yolunun her arka uç fiziksel konakta geçerli + olması gerekmez. Aşağıdaki kural kümesi, eşlem dosyalarının + yardımıyla bunu bizim için yapar; bir kullanıcının eşlemde + girdisi yoksa server0'ın öntanımlı sunucu olarak + kullanılacağını varsayar:

+ +
RewriteEngine on
+RewriteMap    users-to-hosts      "txt:/path/to/map.users-to-hosts"
+RewriteRule   "^/u/([^/]+)/?(.*)" "http://${users-to-hosts:$1|server0}/u/$1/$2"
+ +
+
+ +

Bu yönergenin sözdizimi hakkında daha fazla tartışma için + RewriteMap belgelerine ve + RewriteMap Nasıl Yapılır belgesine + bakın.

+ +
top
+
+

Anında İçerik Yeniden Oluşturma

+ + + +
+
Açıklama:
+ +
+

İçeriği devingen olarak oluşturmak, ancak oluşturulduktan + sonra statik olarak saklamak istiyoruz. Bu kural, statik dosyanın + varlığını kontrol eder ve yoksa oluşturur. Statik dosyalar + istenirse periyodik olarak (örneğin cron ile) kaldırılabilir ve + istek üzerine yeniden oluşturulur.

+
+ +
Çözüm:
+ +
+ Bu, aşağıdaki kural kümesiyle yapılır: + +
# This example is valid in per-directory context only
+RewriteCond "%{REQUEST_URI}"   !-U
+RewriteRule "^(.+)\.html$"     "/regenerate_page.cgi"   [PT,L]
+ + +

-U işleci, sınama dizgesinin (bu durumda + REQUEST_URI) geçerli bir URL olup olmadığını belirler. + Bunu bir alt istek aracılığıyla yapar. Bu alt istek başarısız + olursa - yani istenen kaynak mevcut değilse - bu kural, istenen + kaynağı oluşturan ve belge dizinine kaydeden + /regenerate_page.cgi CGI programını çalıştırır; böylece + bir sonraki istekte statik bir kopya sunulabilir.

+ +

Bu şekilde, seyrek güncellenen belgeler statik biçimde + sunulabilir. Belgelerin yenilenmesi gerekiyorsa belge dizininden + silinebilir ve bir sonraki istekte yeniden oluşturulur.

+
+
+ +
top
+
+

Yük Dengeleme

+ + + +
+
Açıklama:
+ +
+

mod_rewrite kullanarak yükü birkaç sunucu + arasında rastgele dağıtmak istiyoruz.

+
+ +
Çözüm:
+ +
+

Bunu gerçekleştirmek için RewriteMap ve bir sunucu listesi + kullanacağız.

+ +
RewriteEngine on
+RewriteMap  lb       "rnd:/path/to/serverlist.txt"
+RewriteRule "^/(.*)" "http://${lb:servers}/$1"     [P,L]
+ + +

serverlist.txt sunucuların bir listesini içerecektir:

+ +

+## serverlist.txt
+
+servers one.example.com|two.example.com|three.example.com
+

+ +

Belirli bir sunucunun diğerlerinden daha fazla yük almasını +istiyorsanız, onu listeye daha fazla kez ekleyin.

+ +
+ +
Tartışma
+
+

Apache, mod_rewrite ile bir araya getireceğiniz +herhangi bir şeyden çok daha esnek ve özellik açısından zengin bir yük +dengeleme modülü olan mod_proxy_balancer ile +birlikte gelir.

+
+
+ +
top
+
+

Yapılandırılmış Kullanıcı Dizinleri

+ + + +
+
Açıklama:
+ +
+

Binlerce kullanıcısı olan bazı siteler yapılandırılmış bir + ev dizini düzeni kullanır; yani her ev dizini, kullanıcı + adının (örneğin) ilk karakteriyle başlayan bir alt dizindedir. + Böylece, /~larry/anypath şu olur: + /home/l/larry/public_html/anypath; + /~waldo/anypath ise şu olur: + /home/w/waldo/public_html/anypath.

+
+ +
Çözüm:
+ +
+

Tilde URL'leri yukarıdaki düzene göre genişletmek için + aşağıdaki kural kümesini kullanırız.

+ +
RewriteEngine on
+RewriteRule   "^/~(([a-z])[a-z0-9]+)(.*)"  "/home/$2/$1/public_html$3"
+ +
+
+ +
top
+
+

Çapaların Yeniden Yönlendirilmesi

+ + + +
+
Açıklama:
+ +
+

Öntanımlı olarak, bir HTML çapasına yönlendirme çalışmaz; + çünkü mod_rewrite # karakterini + kodlayarak %23'e dönüştürür. Bu da yönlendirmeyi + bozar.

+
+ +
Çözüm:
+ +
+

RewriteRule üzerinde [NE] bayrağını + kullanın. NE, Kodlama Yapma (No Escape) anlamına gelir. +

+
+ +
Tartışma:
+
Bu teknik, mod_rewrite modülünün öntanımlı + olarak URL-kodladığı diğer özel karakterlerle de çalışacaktır.
+
+ +
top
+
+

Zamana Bağlı Yeniden Yazma

+ + + +
+
Açıklama:
+ +
+

Günün saatine göre farklı içerik sunmak için + mod_rewrite kullanmak istiyoruz.

+
+ +
Çözüm:
+ +
+

Yeniden yazma koşulları için TIME_xxx adlı birçok + değişken vardır. Özel sözlüksel karşılaştırma kalıpları olan + <DİZGE, >DİZGE ve + =DİZGE ile birlikte zamana bağlı yönlendirmeler + yapabiliriz:

+ +
RewriteEngine on
+RewriteCond   "%{TIME_HOUR}%{TIME_MIN}" >0700
+RewriteCond   "%{TIME_HOUR}%{TIME_MIN}" <1900
+RewriteRule   "^foo\.html$"             "foo.day.html" [L]
+RewriteRule   "^foo\.html$"             "foo.night.html"
+ + +

Bu, foo.html URL'si altında + 07:01-18:59 saatleri arasında + foo.day.html içeriğini, geri kalan zamanda ise + foo.night.html içeriğini sunar.

+ +
mod_cache, ara vekiller + ve tarayıcıların her biri yanıtları önbelleğe alabilir ve + yapılandırılan zaman penceresinin dışında herhangi bir sayfanın + gösterilmesine neden olabilir. Bu etkiyi kontrol etmek için + mod_expires kullanılabilir. Elbette, içeriği + devingen olarak sunmak ve günün saatine göre özelleştirmek çok + daha iyidir.
+ +
+
+ +
top
+
+

URL Parçalarına Göre Ortam Değişkenleri Atama

+ + + +
+
Açıklama:
+ +
+

Bazen bir yeniden yazma gerçekleştirdiğimizde bir tür durum + bilgisi tutmak isteriz. Örneğin, bu yeniden yazmayı yaptığınıza + dair bir not almak isteyebilirsiniz; böylece daha sonra bir + isteğin bu yeniden yazma yoluyla gelip gelmediğini kontrol + edebilirsiniz. Bunu yapmanın bir yolu bir ortam değişkeni + ayarlamaktır.

+
+ +
Çözüm:
+ +
+

Bir ortam değişkeni ayarlamak için [E] bayrağını kullanın.

+ +
RewriteEngine on
+RewriteRule   "^/horse/(.*)"   "/pony/$1" [E=rewritten:1]
+ + +

Daha sonra kural kümenizde bu ortam değişkenini bir RewriteCond + kullanarak kontrol edebilirsiniz:

+ +
RewriteCond "%{ENV:rewritten}"  =1
+ + +

Ortam değişkenlerinin harici bir yönlendirmeden sonra kalıcı + olmadığını unutmayın. [CO] bayrağını kullanarak bir çerez + ayarlamayı düşünebilirsiniz. Dizin başına ve htaccess yeniden + yazmaları için, son değiştirme dahili bir yönlendirme olarak + işlendiğinde, önceki yeniden yazma turundan gelen ortam + değişkenlerinin başına "REDIRECT_" eklenir.

+ +
+
+ +
+
+

Mevcut Diller:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/advanced.html.zh-cn.utf8 b/docs/manual/rewrite/advanced.html.zh-cn.utf8 new file mode 100644 index 0000000000..967448a81c --- /dev/null +++ b/docs/manual/rewrite/advanced.html.zh-cn.utf8 @@ -0,0 +1,345 @@ + + + + + +mod_rewrite 高级技术 - Apache HTTP 服务器 版本 2.5 + + + + + + + +
<-
+

mod_rewrite 高级技术

+
+

可用语言:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ + +

本文档是 mod_rewrite +参考文档的补充。 +它提供了一些使用 mod_rewrite 的高级技术。

+ + + +
请注意,这些示例中的许多不会在你的特定服务器配置中直接生效, +因此理解它们非常重要,而不仅仅是将示例复制粘贴到你的配置中。
+ +
+ +
top
+
+

基于 URL 的跨多后端分片

+ + + +
+
描述:
+ +
+

一种分配服务器负载或存储空间的常见技术称为"分片"。 + 使用此方法时,前端服务器将使用 URL 将用户或对象一致地"分片"到 + 不同的后端服务器。

+
+ +
解决方案:
+ +
+

在外部映射文件中维护从用户到目标服务器的映射。 + 它们看起来像:

+ +

+user1 physical_host_of_user1
+user2 physical_host_of_user2
+# ... and so on +

+ +

我们将其放入 map.users-to-hosts 文件。 + 目标是映射:

+ +

+/u/user1/anypath +

+ +

到

+ +

+http://physical_host_of_user1/u/user/anypath +

+ +

这样每个 URL 路径不需要在每个后端物理主机上都有效。 + 以下规则集借助映射文件为我们完成此操作, + 假设 server0 是在用户在映射中没有条目时使用的默认服务器:

+ +
RewriteEngine on
+RewriteMap    users-to-hosts      "txt:/path/to/map.users-to-hosts"
+RewriteRule   "^/u/([^/]+)/?(.*)" "http://${users-to-hosts:$1|server0}/u/$1/$2"
+ +
+
+ +

请参阅 RewriteMap + 文档和 RewriteMap 指南 + 以了解此指令语法的更多讨论。

+ +
top
+
+

即时内容再生成

+ + + +
+
描述:
+ +
+

我们希望动态生成内容,但一旦生成就将其静态存储。 + 此规则将检查静态文件是否存在,如果不存在,则生成它。 + 静态文件可以定期删除(例如通过 cron), + 并在需要时按需重新生成。

+
+ +
解决方案:
+ +
+ 这通过以下规则集完成: + +
# This example is valid in per-directory context only
+RewriteCond "%{REQUEST_URI}"   !-U
+RewriteRule "^(.+)\.html$"     "/regenerate_page.cgi"   [PT,L]
+ + +

-U 操作符确定测试字符串(在本例中为 + REQUEST_URI)是否是有效的 URL。它通过子请求来完成。 + 如果此子请求失败——即请求的资源不存在——此规则将调用 CGI 程序 + /regenerate_page.cgi,该程序生成请求的资源并将其保存到 + 文档目录中,这样下次请求时就可以提供静态副本了。

+ +

通过这种方式,不经常更新的文档可以以静态形式提供。 + 如果需要刷新文档,可以从文档目录中删除它们, + 下次请求时将重新生成。

+
+
+ +
top
+
+

负载均衡

+ + + +
+
描述:
+ +
+

我们希望使用 mod_rewrite + 在多台服务器之间随机分配负载。

+
+ +
解决方案:
+ +
+

我们将使用 RewriteMap 和服务器列表来实现。

+ +
RewriteEngine on
+RewriteMap  lb       "rnd:/path/to/serverlist.txt"
+RewriteRule "^/(.*)" "http://${lb:servers}/$1"     [P,L]
+ + +

serverlist.txt 将包含服务器列表:

+ +

+## serverlist.txt
+
+servers one.example.com|two.example.com|three.example.com
+

+ +

如果你希望某台特定服务器承担更多负载,可以在列表中多次添加它。

+ +
+ +
讨论
+
+

Apache 自带一个负载均衡模块 - +mod_proxy_balancer - 它比你使用 +mod_rewrite 拼凑出来的任何方案都更加灵活和功能丰富。

+
+
+ +
top
+
+

结构化用户目录

+ + + +
+
描述:
+ +
+

一些拥有数千用户的站点使用结构化的主目录布局, + 即每个主目录位于一个子目录中, + 该子目录以用户名的第一个字符开头。因此, + /~larry/anypath 是 + /home/l/larry/public_html/anypath, + 而 /~waldo/anypath 是 + /home/w/waldo/public_html/anypath。

+
+ +
解决方案:
+ +
+

我们使用以下规则集将波浪号 URL 展开为上述布局。

+ +
RewriteEngine on
+RewriteRule   "^/~(([a-z])[a-z0-9]+)(.*)"  "/home/$2/$1/public_html$3"
+ +
+
+ +
top
+
+

重定向锚点

+ + + +
+
描述:
+ +
+

默认情况下,重定向到 HTML 锚点不起作用,因为 + mod_rewrite 会转义 # 字符, + 将其变为 %23。这反过来会破坏重定向。

+
+ +
解决方案:
+ +
+

在 RewriteRule 上使用 [NE] 标志。 + NE 代表不转义(No Escape)。 +

+
+ +
讨论:
+
此技术当然也适用于 mod_rewrite + 默认会进行 URL 编码的其他特殊字符。
+
+ +
top
+
+

基于时间的重写

+ + + +
+
描述:
+ +
+

我们希望使用 mod_rewrite + 根据一天中的时间提供不同的内容。

+
+ +
解决方案:
+ +
+

有许多名为 TIME_xxx + 的变量可用于重写条件。结合特殊的词法比较模式 + <STRING、>STRING 和 + =STRING,我们可以进行基于时间的重定向:

+ +
RewriteEngine on
+RewriteCond   "%{TIME_HOUR}%{TIME_MIN}" >0700
+RewriteCond   "%{TIME_HOUR}%{TIME_MIN}" <1900
+RewriteRule   "^foo\.html$"             "foo.day.html" [L]
+RewriteRule   "^foo\.html$"             "foo.night.html"
+ + +

这将在 07:01-18:59 时间段内,以 URL + foo.html 提供 foo.day.html 的内容, + 在其余时间提供 foo.night.html 的内容。

+ +
mod_cache、中间代理和浏览器 + 可能各自缓存响应,导致在配置的时间窗口之外显示某个页面。 + 可以使用 mod_expires 来控制此效果。 + 当然,动态提供内容并根据时间自定义它是更好的方式。
+ +
+
+ +
top
+
+

根据 URL 部分设置环境变量

+ + + +
+
描述:
+ +
+

有时,我们希望在执行重写时保持某种状态。例如, + 你想记录你已完成该重写,以便稍后检查请求是否通过该重写。 + 一种方法是设置环境变量。

+
+ +
解决方案:
+ +
+

使用 [E] 标志设置环境变量。

+ +
RewriteEngine on
+RewriteRule   "^/horse/(.*)"   "/pony/$1" [E=rewritten:1]
+ + +

稍后在你的规则集中,你可以使用 RewriteCond 检查此环境变量:

+ +
RewriteCond "%{ENV:rewritten}"  =1
+ + +

请注意,环境变量在外部重定向后不会保留。你可以考虑使用 [CO] + 标志来设置 cookie。对于目录级和 htaccess 重写, + 当最终替换作为内部重定向处理时,上一轮重写的环境变量会以 + "REDIRECT_" 为前缀。

+ +
+
+ +
+
+

可用语言:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/avoid.html b/docs/manual/rewrite/avoid.html index 50bb8cfec8..4ad96215c4 100644 --- a/docs/manual/rewrite/avoid.html +++ b/docs/manual/rewrite/avoid.html @@ -1,9 +1,33 @@ # GENERATED FROM XML -- DO NOT EDIT +URI: avoid.html.de +Content-Language: de +Content-type: text/html; charset=ISO-8859-1 + URI: avoid.html.en.utf8 Content-Language: en Content-type: text/html; charset=UTF-8 +URI: avoid.html.es.utf8 +Content-Language: es +Content-type: text/html; charset=UTF-8 + URI: avoid.html.fr.utf8 Content-Language: fr Content-type: text/html; charset=UTF-8 + +URI: avoid.html.ja.utf8 +Content-Language: ja +Content-type: text/html; charset=UTF-8 + +URI: avoid.html.ko.euc-kr +Content-Language: ko +Content-type: text/html; charset=EUC-KR + +URI: avoid.html.tr.utf8 +Content-Language: tr +Content-type: text/html; charset=UTF-8 + +URI: avoid.html.zh-cn.utf8 +Content-Language: zh-cn +Content-type: text/html; charset=UTF-8 diff --git a/docs/manual/rewrite/avoid.html.de b/docs/manual/rewrite/avoid.html.de new file mode 100644 index 0000000000..7f79e65172 --- /dev/null +++ b/docs/manual/rewrite/avoid.html.de @@ -0,0 +1,254 @@ + + + + + +Wann man mod_rewrite nicht verwenden sollte - Apache HTTP Server Version 2.5 + + + + + + + +
<-
+

Wann man mod_rewrite nicht verwenden sollte

+
+

Verfügbare Sprachen:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ + +

Dieses Dokument ergänzt die mod_rewrite +Referenzdokumentation. Es beschreibt +vielleicht eines der wichtigsten Konzepte bezüglich mod_rewrite - +nämlich, wann man es vermeiden sollte.

+ +

mod_rewrite sollte als letzter Ausweg betrachtet werden, wenn andere +Alternativen nicht ausreichen. Die Verwendung, wenn einfachere +Alternativen existieren, führt zu Konfigurationen, die verwirrend, fragil und +schwer zu warten sind. Das Verständnis der verfügbaren Alternativen ist +ein sehr wichtiger Schritt zur Beherrschung von mod_rewrite.

+ +

Beachten Sie, dass viele dieser Beispiele nicht unverändert in Ihrer +speziellen Serverkonfiguration funktionieren werden. Es ist daher wichtig, +dass Sie sie verstehen, anstatt die Beispiele einfach auszuschneiden und +in Ihre Konfiguration einzufügen.

+ +

Die häufigste Situation, in der mod_rewrite das +richtige Werkzeug ist, ist wenn die allerbeste Lösung Zugriff auf die +Serverkonfigurationsdateien erfordert und Sie diesen Zugriff nicht haben. +Einige Konfigurationsdirektiven sind nur in der Serverkonfigurationsdatei +verfügbar. Wenn Sie sich in einer Hosting-Situation befinden, in der Sie +nur mit .htaccess-Dateien arbeiten können, müssen Sie möglicherweise auf +mod_rewrite zurückgreifen.

+ +
+ +
top
+
+

Einfache Umleitung

+ + +

mod_alias stellt die Direktiven Redirect und RedirectMatch bereit, die eine Möglichkeit +bieten, eine URL zu einer anderen umzuleiten. Diese Art der einfachen +Umleitung einer URL oder einer Klasse von URLs an einen anderen Ort sollte +mit diesen Direktiven und nicht mit RewriteRule erfolgen. RedirectMatch +ermöglicht es Ihnen, einen regulären Ausdruck in Ihre Umleitungskriterien +einzubinden, was viele der Vorteile der Verwendung von +RewriteRule bietet.

+ +

Eine häufige Verwendung von RewriteRule ist die Umleitung +einer ganzen Klasse von URLs. Beispielsweise müssen alle URLs im Verzeichnis +/one nach http://one.example.com/ umgeleitet werden, +oder alle http-Anfragen müssen nach https +umgeleitet werden.

+ +

Diese Situationen werden besser mit der Redirect-Direktive +behandelt. Denken Sie daran, dass Redirect Pfadinformationen +beibehält. Das heißt, eine Umleitung für die URL /one +wird auch alle darunter liegenden URLs umleiten, wie +/one/two.html und /one/three/four.html.

+ +

Um URLs unter /one nach +http://one.example.com umzuleiten, tun Sie Folgendes:

+ +
Redirect "/one/" "http://one.example.com/"
+ + +

Um einen Hostnamen zu einem anderen umzuleiten, beispielsweise +example.com zu www.example.com, siehe das +Rezept für kanonische Hostnamen.

+ +

Um http-URLs nach https umzuleiten, tun Sie +Folgendes:

+ +
<VirtualHost *:80>
+    ServerName www.example.com
+    Redirect "/" "https://www.example.com/"
+</VirtualHost>
+
+<VirtualHost *:443>
+    ServerName www.example.com
+    # ... SSL-Konfiguration hier
+</VirtualHost>
+ + +

Die Verwendung von RewriteRule für diese Aufgabe kann +angemessen sein, wenn andere RewriteRule-Direktiven im +selben Geltungsbereich vorhanden sind. Dies liegt daran, dass bei +Redirect- und RewriteRule-Direktiven im selben +Geltungsbereich die RewriteRule-Direktiven immer zuerst +ausgeführt werden, unabhängig von der Reihenfolge in der +Konfigurationsdatei.

+ +

Im Fall der http-zu-https-Umleitung wäre die Verwendung +von RewriteRule angemessen, wenn Sie keinen Zugriff auf die +Hauptserverkonfigurationsdatei haben und diese Aufgabe stattdessen in einer +.htaccess-Datei erledigen müssen.

+ +
top
+
+

URL-Aliasing

+

Die Alias-Direktive bietet +eine Zuordnung von einem URI zu einem Verzeichnis - normalerweise einem +Verzeichnis außerhalb Ihres DocumentRoot. +Obwohl es möglich ist, diese Zuordnung mit mod_rewrite +durchzuführen, ist Alias aus Gründen +der Einfachheit und Leistung die bevorzugte Methode.

+ +

Verwendung von Alias

Alias "/cats" "/var/www/virtualhosts/felines/htdocs"
+
+ +

+Die Verwendung von mod_rewrite für diese Zuordnung kann +angemessen sein, wenn Sie keinen Zugriff auf die Serverkonfigurationsdateien +haben. Alias kann nur im Server- oder VirtualHost-Kontext verwendet werden +und nicht in einer .htaccess-Datei. +

+ +

Symbolische Links wären eine weitere Möglichkeit, dasselbe zu erreichen, +wenn Sie Options FollowSymLinks auf Ihrem Server aktiviert +haben.

+
top
+
+

Virtuelles Hosting

+

Obwohl es möglich ist, virtuelle Hosts +mit mod_rewrite zu verwalten, ist dies selten der richtige Weg. Das +Erstellen einzelner <VirtualHost>-Blöcke +ist fast immer der richtige Ansatz. Falls Sie eine enorme Anzahl virtueller +Hosts haben, erwägen Sie die Verwendung von +mod_vhost_alias, um diese Hosts automatisch zu erstellen.

+ +

Module wie mod_macro sind ebenfalls nützlich, um eine +große Anzahl virtueller Hosts dynamisch zu erstellen.

+ +

Die Verwendung von mod_rewrite für die Erstellung +virtueller Hosts kann angemessen sein, wenn Sie einen Hosting-Dienst +verwenden, der Ihnen keinen Zugriff auf die Serverkonfigurationsdateien +gewährt und Sie daher auf die Konfiguration mittels +.htaccess-Dateien beschränkt sind.

+ +

Siehe das Dokument Virtuelle Hosts mit mod_rewrite +für weitere Details, wie Sie dies erreichen können, wenn es Ihnen immer +noch als der richtige Ansatz erscheint.

+ +
top
+
+

Einfaches Proxying

+ +

RewriteRule bietet das [P]-Flag, um umgeschriebene URIs über +mod_proxy weiterzuleiten.

+ +
RewriteRule "^/?images(.*)" "http://imageserver.local/images$1" [P]
+ + +

In vielen Fällen jedoch, wenn kein tatsächlicher Musterabgleich +erforderlich ist, wie im obigen Beispiel, ist die ProxyPass-Direktive die bessere Wahl. +Das Beispiel hier könnte wie folgt dargestellt werden:

+ +
ProxyPass "/images/" "http://imageserver.local/images/"
+ + +

Beachten Sie, dass Sie unabhängig davon, ob Sie RewriteRule oder ProxyPass verwenden, die +ProxyPassReverse-Direktive +benötigen, um Umleitungen vom Backend-Server korrekt weiterzuleiten:

+ +
ProxyPassReverse "/images/" "http://imageserver.local/images/"
+ + +

Sie müssen möglicherweise stattdessen RewriteRule verwenden, +wenn andere RewriteRules im selben Geltungsbereich aktiv sind, +da eine RewriteRule in der Regel vor einem +ProxyPass wirksam wird und somit das gewünschte Ergebnis +vorwegnehmen kann.

+ +
top
+
+

Test von Umgebungsvariablen

+ +

mod_rewrite wird häufig verwendet, um eine bestimmte +Aktion basierend auf dem Vorhandensein oder Fehlen einer bestimmten +Umgebungsvariable oder eines Anfrage-Headers durchzuführen. Dies kann +effizienter mit der <If>-Direktive +erreicht werden.

+ +

Betrachten Sie beispielsweise das häufige Szenario, in dem +RewriteRule verwendet wird, um einen kanonischen +Hostnamen zu erzwingen, wie www.example.com anstelle von +example.com. Dies kann mit der <If>-Direktive wie hier gezeigt +erreicht werden:

+ +
<If "req('Host') != 'www.example.com'">
+    Redirect "/" "http://www.example.com/"
+</If>
+ + +

Diese Technik kann verwendet werden, um Aktionen basierend auf jedem +beliebigen Anfrage-Header, Antwort-Header oder Umgebungsvariable +durchzuführen und mod_rewrite in vielen gängigen +Szenarien zu ersetzen.

+ +

Siehe insbesondere die Dokumentation zur +Ausdrucksauswertung für einen Überblick darüber, welche Arten von +Ausdrücken Sie in <If>-Abschnitten +und in bestimmten anderen Direktiven verwenden können.

+ +
+
+

Verfügbare Sprachen:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/avoid.html.en.utf8 b/docs/manual/rewrite/avoid.html.en.utf8 index 07df04febf..383b4a6429 100644 --- a/docs/manual/rewrite/avoid.html.en.utf8 +++ b/docs/manual/rewrite/avoid.html.en.utf8 @@ -23,8 +23,14 @@

When not to use mod_rewrite

-

Available Languages:  en  | - fr 

+

Available Languages:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

@@ -225,8 +231,14 @@ and in certain other directives.

-

Available Languages:  en  | - fr 

+

Available Languages:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+ + + +
<-
+

Cuándo no usar mod_rewrite

+
+

Idiomas disponibles:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ + +

Este documento complementa la mod_rewrite +documentación de referencia. Describe +quizás uno de los conceptos más importantes sobre mod_rewrite - concretamente, +cuándo evitar usarlo.

+ +

mod_rewrite debería considerarse como último recurso, cuando otras +alternativas resultan insuficientes. Usarlo cuando hay alternativas más simples +lleva a configuraciones que son confusas, frágiles y +difíciles de mantener. Entender qué otras alternativas están disponibles es +un paso muy importante hacia el dominio de mod_rewrite.

+ +

Tenga en cuenta que muchos de estos ejemplos no funcionarán sin cambios en su +configuración particular del servidor, por lo que es importante que los +entienda, en lugar de simplemente copiar y pegar los ejemplos en su +configuración.

+ +

La situación más común en la que mod_rewrite es +la herramienta correcta es cuando la mejor solución requiere acceso a los +archivos de configuración del servidor, y usted no tiene ese acceso. Algunas +directivas de configuración solo están disponibles en el archivo de configuración +del servidor. Así que si está en una situación de alojamiento donde solo tiene archivos .htaccess +con los que trabajar, puede necesitar recurrir a +mod_rewrite.

+ +
+ +
top
+
+

Redirección Simple

+ + +

mod_alias proporciona las directivas Redirect y RedirectMatch, que proporcionan un +medio para redirigir una URL a otra. Este tipo de redirección simple de +una URL, o una clase de URLs, a otro lugar, debería realizarse +usando estas directivas en lugar de RewriteRule. RedirectMatch +le permite incluir una expresión regular en sus criterios de redirección, +proporcionando muchos de los beneficios de usar RewriteRule.

+ +

Un uso común de RewriteRule es redirigir toda una +clase de URLs. Por ejemplo, todas las URLs en el directorio /one +deben ser redirigidas a http://one.example.com/, o quizás +todas las solicitudes http deben ser redirigidas a +https.

+ +

Estas situaciones se manejan mejor con la directiva Redirect. +Recuerde que Redirect preserva la información de +ruta. Es decir, una redirección para una URL /one también +redirigirá todas las URLs bajo ella, como /one/two.html +y /one/three/four.html.

+ +

Para redirigir URLs bajo /one a +http://one.example.com, haga lo siguiente:

+ +
Redirect "/one/" "http://one.example.com/"
+ + +

Para redirigir un nombre de host a otro, por ejemplo +example.com a www.example.com, vea la +receta de Nombres de Host Canónicos.

+ +

Para redirigir URLs http a https, haga lo +siguiente:

+ +
<VirtualHost *:80>
+    ServerName www.example.com
+    Redirect "/" "https://www.example.com/"
+</VirtualHost>
+
+<VirtualHost *:443>
+    ServerName www.example.com
+    # ... la configuración SSL va aquí
+</VirtualHost>
+ + +

El uso de RewriteRule para realizar esta tarea puede ser +apropiado si hay otras directivas RewriteRule en +el mismo ámbito. Esto se debe a que, cuando hay directivas Redirect +y RewriteRule en el mismo ámbito, las +directivas RewriteRule se ejecutarán primero, independientemente del +orden de aparición en el archivo de configuración.

+ +

En el caso de la redirección de http-a-https, el uso de +RewriteRule sería apropiado si no tiene acceso +al archivo de configuración principal del servidor, y está obligado a realizar esta +tarea en un archivo .htaccess en su lugar.

+ +
top
+
+

Alias de URL

+

La directiva Alias +proporciona mapeo de un URI a un directorio - generalmente un directorio fuera +de su DocumentRoot. Aunque es +posible realizar este mapeo con mod_rewrite, +Alias es el método preferido, por +razones de simplicidad y rendimiento.

+ +

Usando Alias

Alias "/cats" "/var/www/virtualhosts/felines/htdocs"
+
+ +

+El uso de mod_rewrite para realizar este mapeo puede ser +apropiado cuando no tiene acceso a los archivos de configuración +del servidor. Alias solo puede usarse en contexto de servidor o virtualhost, y no +en un archivo .htaccess. +

+ +

Los enlaces simbólicos serían otra forma de lograr lo mismo, si +tiene Options FollowSymLinks habilitado en su +servidor.

+
top
+
+

Alojamiento Virtual

+

Aunque es posible manejar hosts virtuales +con mod_rewrite, rara vez es la forma correcta. Crear bloques +<VirtualHost> individuales es +casi siempre la forma correcta de proceder. En el +caso de que tenga un número enorme de hosts virtuales, considere usar +mod_vhost_alias para crear estos hosts automáticamente.

+ +

Módulos como mod_macro también son +útiles para crear un gran número de hosts virtuales dinámicamente.

+ +

Usar mod_rewrite para la creación de hosts virtuales puede ser +apropiado si está usando un servicio de alojamiento que no le proporciona +acceso a los archivos de configuración del servidor, y por lo tanto está +restringido a la configuración usando archivos .htaccess.

+ +

Vea el documento de hosts virtuales con mod_rewrite +para más detalles sobre cómo podría lograr esto si aún +parece ser el enfoque correcto.

+ +
top
+
+

Proxy Simple

+ +

RewriteRule proporciona la bandera [P] para pasar URIs reescritas a través de +mod_proxy.

+ +
RewriteRule "^/?images(.*)" "http://imageserver.local/images$1" [P]
+ + +

Sin embargo, en muchos casos, cuando no hay necesidad real de coincidencia +de patrones, como en el ejemplo mostrado arriba, la directiva ProxyPass es una mejor opción. +El ejemplo aquí podría expresarse como:

+ +
ProxyPass "/images/" "http://imageserver.local/images/"
+ + +

Tenga en cuenta que ya sea que use RewriteRule o ProxyPass, todavía necesitará usar la +directiva ProxyPassReverse para +capturar redirecciones emitidas por el servidor backend:

+ +
ProxyPassReverse "/images/" "http://imageserver.local/images/"
+ + +

Puede necesitar usar RewriteRule en su lugar cuando hay +otras RewriteRules en efecto en el mismo ámbito, ya que una +RewriteRule generalmente tendrá efecto antes que un +ProxyPass, y por lo tanto puede anticiparse a lo que está intentando +lograr.

+ +
top
+
+

Prueba de Variables de Entorno

+ +

mod_rewrite se usa frecuentemente para tomar una acción particular +basada en la presencia o ausencia de una variable de entorno particular +o cabecera de solicitud. Esto puede hacerse de manera más eficiente usando la +directiva <If>.

+ +

Considere, por ejemplo, el escenario común donde +RewriteRule se usa para imponer un nombre de +host canónico, como www.example.com en lugar de +example.com. Esto puede hacerse usando la directiva <If>, como se muestra aquí:

+ +
<If "req('Host') != 'www.example.com'">
+    Redirect "/" "http://www.example.com/"
+</If>
+ + +

Esta técnica puede usarse para tomar acciones basadas en cualquier cabecera de +solicitud, cabecera de respuesta o variable de entorno, reemplazando +mod_rewrite en muchos escenarios comunes.

+ +

Vea especialmente la documentación de evaluación +de expresiones para una visión general de qué tipos de expresiones puede +usar en secciones <If>, +y en ciertas otras directivas.

+ +
+
+

Idiomas disponibles:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/avoid.html.fr.utf8 b/docs/manual/rewrite/avoid.html.fr.utf8 index c758f747b4..f5cc2a474e 100644 --- a/docs/manual/rewrite/avoid.html.fr.utf8 +++ b/docs/manual/rewrite/avoid.html.fr.utf8 @@ -23,11 +23,15 @@

Quand ne pas utiliser mod_rewrite

-

Langues Disponibles:  en  | - fr 

+

Langues Disponibles:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

-
Cette traduction peut être périmée. Vérifiez la version - anglaise pour les changements récents.

Ce document est un complément à la Documentation de référence de @@ -95,7 +99,7 @@ rediriger toutes les URLs de niveaux inférieurs comme

Pour rediriger les URLs sous /un vers http://un.example.com/, utilisez cette définition :

-
Redirect /one/ http://one.example.com/
+
Redirect "/one/" "http://one.example.com/"

Pour rediriger un nom d'hôte vers un autre nom d'hôte, par exemple @@ -106,13 +110,13 @@ méthode Noms d'hôtes canoniques.

<VirtualHost *:80>
-ServerName www.example.com
-Redirect "/" "https://www.example.com/"
+    ServerName www.example.com
+    Redirect "/" "https://www.example.com/"
 </VirtualHost>
 
 <VirtualHost *:443>
-ServerName www.example.com
-#  ... insérer ici la configuration SSL
+    ServerName www.example.com
+    # ... insérer ici la configuration SSL
 </VirtualHost>
@@ -228,7 +232,7 @@ directive <If>
<If "req('Host') != 'www.example.com'">
-    Redirect "/" "http://www.example.com"
+    Redirect "/" "http://www.example.com/"
 </If>
@@ -244,8 +248,14 @@ ainsi que dans certaines directives.

-

Langues Disponibles:  en  | - fr 

+

Langues Disponibles:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+ + + +
<-
+

mod_rewrite を使わない場合

+
+

翻訳済み言語:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ + +

このドキュメントは mod_rewrite +リファレンスドキュメントを補足するものです。 +mod_rewrite について最も重要な概念の一つ、 +すなわち、いつ使用を避けるべきかについて説明します。

+ +

mod_rewrite は、他の代替手段が不十分な場合の最後の手段と +考えるべきです。よりシンプルな代替手段がある場合に使用すると、 +設定が混乱しやすく、壊れやすく、メンテナンスしにくくなります。 +他にどのような代替手段が利用できるかを理解することは、 +mod_rewrite を習得するための非常に重要なステップです。

+ +

これらの例の多くは、特定のサーバ設定ではそのまま動作しないことに +注意してください。そのため、単にコピー&ペーストするのではなく、 +内容を理解することが重要です。

+ +

mod_rewrite が適切なツールである最も一般的な状況は、 +最善の解決策がサーバ設定ファイルへのアクセスを必要とし、そのアクセスが +ない場合です。一部の設定ディレクティブはサーバ設定ファイルでのみ +使用可能です。そのため、.htaccess ファイルのみを使用できるホスティング +環境にいる場合は、mod_rewrite に頼る必要があるかもしれません。

+ +
+ +
top
+
+

シンプルなリダイレクト

+ + +

mod_alias は、ある URL から別の URL へのリダイレクト手段を +提供する Redirect および RedirectMatch ディレクティブを提供します。 +この種の、ある URL または URL のクラスを別の場所へのシンプルなリダイレクトは、 +RewriteRule ではなく、これらの +ディレクティブを使用して行うべきです。RedirectMatch では +リダイレクト基準に正規表現を含めることができ、RewriteRule を +使用する利点の多くを享受できます。

+ +

RewriteRule の一般的な使用法は、URL のクラス全体を +リダイレクトすることです。例えば、/one ディレクトリのすべての +URL を http://one.example.com/ にリダイレクトする必要がある場合や、 +すべての http リクエストを https に +リダイレクトする必要がある場合などです。

+ +

これらの状況は Redirect ディレクティブで処理する方が +適切です。Redirect はパス情報を保持することを忘れないでください。 +つまり、URL /one のリダイレクトは、/one/two.html +や /one/three/four.html など、その配下のすべての URL も +リダイレクトします。

+ +

/one 配下の URL を +http://one.example.com にリダイレクトするには、 +以下のようにします:

+ +
Redirect "/one/" "http://one.example.com/"
+ + +

あるホスト名から別のホスト名にリダイレクトするには、例えば +example.com を www.example.com にリダイレクトするには、 +正規ホスト名 +のレシピを参照してください。

+ +

http URL を https にリダイレクトするには、 +以下のようにします:

+ +
<VirtualHost *:80>
+    ServerName www.example.com
+    Redirect "/" "https://www.example.com/"
+</VirtualHost>
+
+<VirtualHost *:443>
+    ServerName www.example.com
+    # ... SSL 設定をここに記述
+</VirtualHost>
+ + +

同じスコープに他の RewriteRule ディレクティブがある場合は、 +このタスクに RewriteRule を使用するのが適切な場合があります。 +これは、同じスコープに Redirect と RewriteRule +ディレクティブがある場合、設定ファイルでの出現順序に関係なく、 +RewriteRule ディレクティブが先に実行されるためです。

+ +

http から https へのリダイレクトの場合、メインサーバ設定ファイルに +アクセスできず、.htaccess ファイルでこのタスクを実行する必要がある +場合は、RewriteRule の使用が適切です。

+ +
top
+
+

URL エイリアス

+

Alias ディレクティブは、 +URI からディレクトリ (通常は DocumentRoot +の外部のディレクトリ) へのマッピングを提供します。このマッピングを +mod_rewrite で行うことは可能ですが、シンプルさとパフォーマンスの +理由から Alias が推奨される +方法です。

+ +

Alias の使用

Alias "/cats" "/var/www/virtualhosts/felines/htdocs"
+
+ +

+サーバ設定ファイルにアクセスできない場合に、このマッピングを行うために +mod_rewrite を使用するのが適切な場合があります。Alias は +サーバまたはバーチャルホストのコンテキストでのみ使用でき、 +.htaccess ファイルでは使用できません。 +

+ +

サーバで Options FollowSymLinks が有効になっている場合は、 +シンボリックリンクも同じことを実現する方法の一つです。

+
top
+
+

バーチャルホスティング

+

mod_rewrite でバーチャルホストを +処理することは可能ですが、適切な方法であることはめったにありません。 +個別の <VirtualHost> +ブロックを作成するのがほぼ常に正しい方法です。非常に多数のバーチャルホストが +ある場合は、mod_vhost_alias を使用してこれらのホストを +自動的に作成することを検討してください。

+ +

mod_macro などのモジュールも、 +多数のバーチャルホストを動的に作成するのに便利です。

+ +

ホスティングサービスがサーバ設定ファイルへのアクセスを提供せず、 +.htaccess ファイルを使用した設定に制限されている場合は、 +バーチャルホスト作成に mod_rewrite を使用するのが +適切な場合があります。

+ +

それでも適切なアプローチと思われる場合に、これをどのように実現 +するかの詳細については、mod_rewrite による +バーチャルホストドキュメントを参照してください。

+ +
top
+
+

シンプルなプロキシ

+ +

RewriteRule は、書き換えた URI を +mod_proxy 経由で渡すための [P] +フラグを提供します。

+ +
RewriteRule "^/?images(.*)" "http://imageserver.local/images$1" [P]
+ + +

ただし、上の例のように実際のパターンマッチングが不要な場合は、 +ProxyPass ディレクティブの方が +適切な選択です。上の例は以下のように記述できます:

+ +
ProxyPass "/images/" "http://imageserver.local/images/"
+ + +

RewriteRule と ProxyPass のどちらを使用する場合でも、 +バックエンドサーバから発行されるリダイレクトをキャッチするために +ProxyPassReverse ディレクティブを +使用する必要があることに注意してください:

+ +
ProxyPassReverse "/images/" "http://imageserver.local/images/"
+ + +

同じスコープで他の RewriteRule が有効な場合は、 +RewriteRule は通常 ProxyPass よりも先に適用されるため、 +実現しようとしていることを横取りする可能性があり、代わりに +RewriteRule を使用する必要がある場合があります。

+ +
top
+
+

環境変数のテスト

+ +

mod_rewrite は、特定の環境変数やリクエストヘッダの +有無に基づいて特定のアクションを実行するために頻繁に使用されます。 +これは <If> +ディレクティブを使用してより効率的に行えます。

+ +

例えば、正規ホスト名を強制するために RewriteRule +を使用する一般的なシナリオ、つまり example.com の代わりに +www.example.com を使用させるシナリオを考えてみましょう。 +これは、次に示すように <If> +ディレクティブを使用して行えます:

+ +
<If "req('Host') != 'www.example.com'">
+    Redirect "/" "http://www.example.com/"
+</If>
+ + +

このテクニックは、任意のリクエストヘッダ、レスポンスヘッダ、または +環境変数に基づいてアクションを実行するために使用でき、多くの一般的な +シナリオで mod_rewrite を置き換えることができます。

+ +

特に <If> セクションや +その他の特定のディレクティブで使用できる式の種類の概要については、 +式の評価ドキュメントを参照してください。

+ +
+
+

翻訳済み言語:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/avoid.html.ko.euc-kr b/docs/manual/rewrite/avoid.html.ko.euc-kr new file mode 100644 index 0000000000..3da039677e --- /dev/null +++ b/docs/manual/rewrite/avoid.html.ko.euc-kr @@ -0,0 +1,258 @@ + + + + + +mod_rewriteë¥� �¬ì�©í��ì§� ë§����� �� ê²½ì�� - Apache HTTP Server Version 2.5 + + + + + + + +
<-
+

mod_rewriteë¥� �¬ì�©í��ì§� ë§����� �� ê²½ì��

+
+

°¡´ÉÇÑ ¾ð¾î:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ + +

�� 문ì���� mod_rewrite +참조 문ì��ë¥� ë³´ì¶©�©ë����. +mod_rewrite�� ���� ê°��� ì¤����� ê°��� ì¤� ����, +ì¦� �¬ì�©ì�� �¼í�´ì�� �� ��ë¥� �¤ë��©ë����.

+ +

mod_rewrite�� �¤ë¥¸ ������ ë¶�족í�� �� ìµ����� +���¨ì�¼ë� ê³��¤í�´ì�� �©ë����. �� ê°��¨í�� ������ ���� �� �´ë�� +�¬ì�©í��ë©� �¼ë���¤ë�½ê� ì·¨ì�½í��ë©� ��ì§� ê´�리í��ê¸� �´ë�¤ì�� �¤ì���� +�©ë����. �´ë�� �¤ë¥¸ ������ ê°��¥í��ì§� �´í�´í���� ê²��� +mod_rewrite ���¬ì�� ���� 매ì�� ì¤����� +�¨ê�������.

+ +

�� ������ ì¤� ë§��� ê²��� �¹ì�� ��ë²� �¤ì������ ê·¸ë��ë¡� +������ì§� ���� �� ���¼ë��ë¡�, �¨ì���� ����ë¥� ë³µì�¬í���� �¤ì���� +ë¶��¬ë�£ê¸°ë³´ë�¤ë�� �´í�´í���� ê²��� ì¤����©ë����.

+ +

mod_rewriteê°� �¬ë�ë¥� ��구ì�� ê°��� �¼ë����� +���©ì�� ìµ����� �´ê²°ì±��� ��ë²� �¤ì�� ���¼ì�� ���� ��ê·¼ì�� +����ë¡� ��ì§�ë§� ê·� ��ê·� ê¶����� ���� ê²½ì�°ì������. �¼ë� �¤ì�� +ì§����´ë�� ��ë²� �¤ì�� ���¼ì����ë§� �¬ì�©í�� �� ���µë����. �°ë�¼ì�� +.htaccess ���¼ë� �¬ì�©í�� �� ���� �¸ì�¤í�� ��ê²½ì�� ���¤ë©´ +mod_rewrite�� ��ì¡´í�´ì�� �� �� ���µë����.

+ +
+ +
top
+
+

�¨ì�� 리ë�¤ì�´ë����

+ + +

mod_alias�� Redirect�� RedirectMatch ì§����´ë�� ��ê³µí��ë©�, +������ URL�� �¤ë¥¸ URLë¡� 리ë�¤ì�´ë���¸í���� ���¨ì�� ��ê³µí�©ë����. +������ URL ���� URL �´ë���¤ë�� �¤ë¥¸ ê³³ì�¼ë� �´ë�¬í�� ì¢�ë¥��� +�¨ì�� 리ë�¤ì�´ë������ RewriteRule ���� �� ì§����´ë�� +�¬ì�©í���� �����´ì�� �©ë����. RedirectMatchë¥� �¬ì�©í��ë©� +리ë�¤ì�´ë���� 기ì��� ��ê·� �������� �¬í�¨í�� �� ���� +RewriteRule �¬ì�©ì�� ë§��� �´ì���� ��ê³µí�©ë����.

+ +

RewriteRule�� �¼ë����� �©ë���� ��ì²� URL �´ë���¤ë�� +리ë�¤ì�´ë���¸í���� ê²�������. ��ë¥� �¤ì��, /one ������리ì�� +모ë�� URL�� http://one.example.com/�¼ë� +리ë�¤ì�´ë���¸í��ê±°ë��, 모ë�� http ��ì²��� +httpsë¡� 리ë�¤ì�´ë���¸í�´ì�� �� �� ���µë����.

+ +

�´ë�¬í�� ���©ì�� Redirect ì§����´ë� �� �� ì²�리ë�©ë����. +Redirect�� ê²½ë� ��ë³´ë�� ë³´ì¡´���¤ë�� ê²��� +기ì�µí��������. ì¦�, URL /one�� ���� 리ë�¤ì�´ë���¸ë�� +/one/two.html ë°� +/one/three/four.htmlê³� ê°��� ê·� ������ 모ë�� +URL�� 리ë�¤ì�´ë���¸í�©ë����.

+ +

/one ������ URL�� +http://one.example.com�¼ë� 리ë�¤ì�´ë���¸í���¤ë©´ +�¤ì��ê³� ê°��� ��������:

+ +
Redirect "/one/" "http://one.example.com/"
+ + +

������ �¸ì�¤í�¸ë��� �¤ë¥¸ ê²��¼ë� 리ë�¤ì�´ë���¸í���¤ë©´, ��ë¥� �¤ì�� +example.com�� www.example.com�¼ë�, +��ê·� �¸ì�¤í�¸ë� +�����¼ë�� 참조��������.

+ +

http URL�� httpsë¡� +리ë�¤ì�´ë���¸í���¤ë©´ �¤ì��ê³� ê°��� ��������:

+ +
<VirtualHost *:80>
+    ServerName www.example.com
+    Redirect "/" "https://www.example.com/"
+</VirtualHost>
+
+<VirtualHost *:443>
+    ServerName www.example.com
+    # ... SSL �¤ì���� �¬ê¸°��
+</VirtualHost>
+ + +

ê°��� ë²����� �¤ë¥¸ RewriteRule ì§����´ê� ���� +ê²½ì�� �� ������ ������ê¸� ���� RewriteRule�� +�¬ì�©í���� ê²��� ������ �� ���µë����. �´ë�� ê°��� ë²����� +Redirect�� RewriteRule ì§����´ê� +���� �� �¤ì�� ���¼ì�� ������ ê´�ê³����� RewriteRule +ì§����´ê� 먼ì�� �¤í����ê¸� ��문ì������.

+ +

http���� httpsë¡��� 리ë�¤ì�´ë������ ê²½ì��, ì£� ��ë²� +�¤ì�� ���¼ì�� ��ê·¼í�� �� ��ê³� .htaccess ���¼ì���� +�� ������ �����´ì�� ���� ê²½ì�� RewriteRule �¬ì�©ì�� +�����©ë����.

+ +
top
+
+

URL �� ���

+

Alias ì§����´ë�� +URI���� ������리ë��� 매í���� ��ê³µí��ë©�, ë³´í�� +DocumentRoot �¸ë��� +������리ì������. mod_rewriteë¡� �� 매í���� +������ �� ��ì§�ë§�, �¨ì���±ê³¼ �±ë�¥ì�� �´ì��ë¡� +Aliasê°� ���¸ë���� +ë°©ë�������.

+ +

Alias �¬ì��

Alias "/cats" "/var/www/virtualhosts/felines/htdocs"
+
+ +

+��ë²� �¤ì�� ���¼ì�� ��ê·¼í�� �� ���� ê²½ì�� �� 매í���� ������ê¸� ���� +mod_rewriteë¥� �¬ì�©í���� ê²��� ������ �� ���µë����. +Alias�� ��ë²� ���� ê°����¸ì�¤í�� 컨í���¤í�¸ì����ë§� �¬ì�©í�� �� ���¼ë©° +.htaccess ���¼ì������ �¬ì�©í�� �� ���µë����. +

+ +

��ë²����� Options FollowSymLinksê°� ���±í������ +���¤ë©´ �¬ë³¼ë¦� ë§��¬ë�� ê°��� ê²��� �¬ì�±í���� �� �¤ë¥¸ ë°©ë��� +�� �� ���µë����.

+
top
+
+

ê°��� �¸ì�¤í��

+

mod_rewriteë¡� ê°��� �¸ì�¤í��ë¥� +ì²�리í�� �� ��ì§�ë§�, �¬ë�ë¥� ë°©ë��� ê±°ì�� ��������. ê°�ë³� +<VirtualHost> +ë¸�ë¡��� ë§����� ê²��� ê±°ì�� ���� �¬ë�ë¥� ë°©ë�������. ê°��� �¸ì�¤í�¸ê� +매ì�� ë§��� ê²½ì�� �´ë�¬í�� �¸ì�¤í�¸ë�� �����¼ë� ���±í��ê¸� ���� +mod_vhost_alias �¬ì�©ì�� ê³��¤í��������.

+ +

mod_macro�� ê°��� 모ë���� ������ ê°��� +�¸ì�¤í�¸ë�� �����¼ë� ���±í���� �� ���©í�©ë����.

+ +

��ë²� �¤ì�� ���¼ì�� ���� ��ê·� ê¶����� ��ê³µí��ì§� ���� �¸ì�¤í�� +��ë¹��¤ë�� �¬ì�©í��ê³� ���� .htaccess ���¼ì�� �¬ì�©í�� +�¤ì���¼ë� �������� ê²½ì�� ê°����¸ì�¤í�� ���±ì�� +mod_rewriteë¥� �¬ì�©í���� ê²��� ������ �� +���µë����.

+ +

�´ê��� �¬ì���� �¬ë�ë¥� ��ê·� ë°©ë��¼ë� ë³´ì�¸ë�¤ë©´ �´ë�� �´ë�»ê� +������ �� ����ì§��� ���� ���¸í�� �´ì�©ì�� +mod_rewriteë¡� ê°��� �¸ì�¤í�� 문ì��ë¥� +참조��������.

+ +
top
+
+

�¨ì�� ��ë¡���

+ +

RewriteRule�� +�¬ì���±ë�� URIë¥� mod_proxyë¥� �µí�� ���¬í��ê¸� ���� +[P] ����ê·¸ë�� ��ê³µí�©ë����.

+ +
RewriteRule "^/?images(.*)" "http://imageserver.local/images$1" [P]
+ + +

ê·¸ë�¬ë�� ���� ����ì²��� �¤ì�� �¨í�� 매칭�� ������ì§� ���� +ë§��� ê²½ì�� ProxyPass +ì§����´ê� �� ���� ����������. �¬ê¸°�� ������ �¤ì��ê³� ê°��� +������ �� ���µë����:

+ +
ProxyPass "/images/" "http://imageserver.local/images/"
+ + +

RewriteRule�´ë�� +ProxyPass�´ë��, +ë°±ì���� ��ë²����� ë°����� 리ë�¤ì�´ë���¸ë�� �¬ë�르ê� ���¬í��ê¸� ���� +ProxyPassReverse +ì§����´ë�� �¬ì�©í�´ì�� ���¤ë�� ���� ������������:

+ +
ProxyPassReverse "/images/" "http://imageserver.local/images/"
+ + +

ê°��� ë²����� �¤ë¥¸ RewriteRule�� ���©ë��ê³� ���� +RewriteRule�� ProxyPassë³´ë�� 먼ì�� +���©ë���� �������¤ë�� ������ ������ �� ���� ê²½ì�� +RewriteRule�� ���� �¬ì�©í�´ì�� �� �� ���µë����.

+ +
top
+
+

��ê²� ë³��� ���¤í��

+ +

mod_rewrite�� �¹ì�� ��ê²� ë³��� ���� ��ì²� +�¤ë���� ì¡´ì�� �¬ë��� �°ë�� �¹ì�� ������ �������� �� ��ì£� +�¬ì�©ë�©ë����. �´ê��� <If> ì§����´ë�� �¬ì�©í���� �� �¨ì�¨ì���¼ë� +������ �� ���µë����.

+ +

��ë¥� �¤ì��, RewriteRule�� +example.com ���� www.example.comê³� +ê°��� ��ê·� �¸ì�¤í�¸ë��� ê°������� �� �¬ì�©ë���� �¼ë����� ����리ì�¤ë�� +ê³��¤í��������. �´ê��� �¬ê¸°�� ������ ��ë¡� <If> ì§����´ë�� �¬ì�©í���� +������ �� ���µë����:

+ +
<If "req('Host') != 'www.example.com'">
+    Redirect "/" "http://www.example.com/"
+</If>
+ + +

�� 기ì���� ��ì²� �¤ë��, ���� �¤ë�� ���� ��ê²� ë³����� 기ë��� +������ �������� �� �¬ì�©í�� �� ���¼ë©°, ë§��� �¼ë����� +����리ì�¤ì���� mod_rewriteë¥� ��ì²´í�©ë����.

+ +

<If> �¹ì��ê³� +�¹ì�� �¤ë¥¸ ì§����´ì���� �¬ì�©í�� �� ���� ������ ������ ���� +ê°����� �¹í�� ������ ��ê°� +문ì��ë¥� 참조��������.

+ +
+
+

°¡´ÉÇÑ ¾ð¾î:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/avoid.html.tr.utf8 b/docs/manual/rewrite/avoid.html.tr.utf8 new file mode 100644 index 0000000000..b3885f3b10 --- /dev/null +++ b/docs/manual/rewrite/avoid.html.tr.utf8 @@ -0,0 +1,253 @@ + + + + + +mod_rewrite Ne Zaman Kullanılmamalı - Apache HTTP Sunucusu Sürüm 2.5 + + + + + + + +
<-
+

mod_rewrite Ne Zaman Kullanılmamalı

+
+

Mevcut Diller:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ + +

Bu belge, mod_rewrite +başvuru belgelerini tamamlar. +mod_rewrite hakkındaki belki de en önemli kavramlardan +birini açıklar: ne zaman kullanılmaması gerektiğini.

+ +

mod_rewrite, diğer alternatiflerin yetersiz kaldığı +durumlarda son çare olarak düşünülmelidir. Daha basit alternatifler +varken kullanılması, kafa karıştırıcı, kırılgan ve bakımı zor +yapılandırmalara yol açar. Hangi alternatiflerin mevcut olduğunu +anlamak, mod_rewrite konusunda uzmanlaşmanın çok +önemli bir adımıdır.

+ +

Bu örneklerin birçoğunun sizin sunucu yapılandırmanızda değişiklik +yapılmadan çalışmayacağını unutmayın; bu nedenle örnekleri +yapılandırmanıza kopyalayıp yapıştırmak yerine anlamanız +önemlidir.

+ +

mod_rewrite modülünün doğru araç olduğu en yaygın +durum, en iyi çözümün sunucu yapılandırma dosyalarına erişim +gerektirdiği ancak bu erişime sahip olmadığınız durumdur. Bazı +yapılandırma yönergeleri yalnızca sunucu yapılandırma dosyasında +kullanılabilir. Bu nedenle, yalnızca .htaccess dosyalarıyla +çalışabileceğiniz bir barındırma ortamındaysanız, +mod_rewrite kullanmanız gerekebilir.

+ +
+ +
top
+
+

Basit Yönlendirme

+ + +

mod_alias, bir URL'yi başka birine yönlendirme +aracı sağlayan Redirect ve +RedirectMatch yönergelerini +sunar. Bir URL'nin veya bir URL sınıfının başka bir yere bu tür basit +yönlendirmesi, RewriteRule +yerine bu yönergeler kullanılarak gerçekleştirilmelidir. +RedirectMatch, yönlendirme kriterlerinize düzenli ifade +eklemenize olanak tanır ve RewriteRule kullanmanın +avantajlarının birçoğunu sağlar.

+ +

RewriteRule için yaygın bir kullanım, URL'lerin tüm bir +sınıfını yönlendirmektir. Örneğin, /one dizinindeki tüm +URL'ler http://one.example.com/ adresine yönlendirilmeli +veya belki tüm http istekleri https'ye +yönlendirilmelidir.

+ +

Bu durumlar Redirect yönergesiyle daha iyi ele alınır. +Redirect yönergesinin yol bilgisini koruduğunu +unutmayın. Yani, /one URL'si için bir yönlendirme, +/one/two.html ve /one/three/four.html +gibi altındaki tüm URL'leri de yönlendirecektir.

+ +

/one altındaki URL'leri +http://one.example.com adresine yönlendirmek için +şunları yapın:

+ +
Redirect "/one/" "http://one.example.com/"
+ + +

Bir konak adını başka birine yönlendirmek için, örneğin +example.com'u www.example.com'a yönlendirmek +için Kurallı Konak Adları +tarifine bakın.

+ +

http URL'lerini https'ye yönlendirmek +için şunları yapın:

+ +
<VirtualHost *:80>
+    ServerName www.example.com
+    Redirect "/" "https://www.example.com/"
+</VirtualHost>
+
+<VirtualHost *:443>
+    ServerName www.example.com
+    # ... SSL yapılandırması burada yer alır
+</VirtualHost>
+ + +

RewriteRule kullanarak bu görevi gerçekleştirmek, aynı +kapsamda başka RewriteRule yönergeleri varsa uygun +olabilir. Çünkü aynı kapsamda Redirect ve +RewriteRule yönergeleri olduğunda, +RewriteRule yönergeleri yapılandırma dosyasındaki sıraya +bakılmaksızın önce çalışacaktır.

+ +

http-to-https yönlendirmesi durumunda, ana sunucu +yapılandırma dosyasına erişiminiz yoksa ve bu görevi bunun yerine bir +.htaccess dosyasında gerçekleştirmek zorundaysanız, +RewriteRule kullanımı uygun olacaktır.

+ +
top
+
+

URL Takma Adlandırma

+

Alias yönergesi, bir +URI'den bir dizine - genellikle DocumentRoot dışındaki bir dizine - eşleme +sağlar. Bu eşlemeyi mod_rewrite ile gerçekleştirmek +mümkün olsa da, basitlik ve performans nedeniyle Alias tercih edilen yöntemdir.

+ +

Alias Kullanımı

Alias "/cats" "/var/www/virtualhosts/felines/htdocs"
+
+ +

+Bu eşlemeyi gerçekleştirmek için mod_rewrite +kullanımı, sunucu yapılandırma dosyalarına erişiminiz olmadığında +uygun olabilir. Alias yalnızca sunucu veya sanal konak bağlamında +kullanılabilir, .htaccess dosyasında kullanılamaz. +

+ +

Sunucunuzda Options FollowSymLinks etkinse, sembolik +bağlantılar aynı şeyi gerçekleştirmenin başka bir yolu olabilir.

+
top
+
+

Sanal Konak Oluşturma

+

mod_rewrite ile sanal konakları yönetmek +mümkün olsa da, nadiren doğru yoldur. Ayrı ayrı <VirtualHost> blokları +oluşturmak neredeyse her zaman doğru yaklaşımdır. Çok sayıda sanal +konağınız olması durumunda, bu konakları otomatik olarak oluşturmak +için mod_vhost_alias kullanmayı düşünün.

+ +

mod_macro gibi modüller de çok sayıda sanal konağı +devingen olarak oluşturmak için yararlıdır.

+ +

Sanal konak oluşturma için mod_rewrite kullanımı, +sunucu yapılandırma dosyalarına erişim sağlamayan bir barındırma +hizmeti kullanıyorsanız ve yapılandırmayı .htaccess +dosyaları kullanarak yapmak zorundaysanız uygun olabilir.

+ +

Yine de doğru yaklaşım gibi görünüyorsa, bunu nasıl +gerçekleştirebileceğiniz hakkında daha fazla ayrıntı için mod_rewrite ile sanal konaklar belgesine +bakın.

+ +
top
+
+

Basit Vekil Kullanımı

+ +

RewriteRule, yeniden +yazılmış URI'leri mod_proxy üzerinden geçirmek için +[P] bayrağını sağlar.

+ +
RewriteRule "^/?images(.*)" "http://imageserver.local/images$1" [P]
+ + +

Ancak birçok durumda, yukarıdaki örnekte gösterildiği gibi gerçek +bir kalıp eşleştirmesine gerek olmadığında, ProxyPass yönergesi daha iyi bir +seçimdir. Buradaki örnek şöyle ifade edilebilir:

+ +
ProxyPass "/images/" "http://imageserver.local/images/"
+ + +

İster RewriteRule +ister ProxyPass kullanın, +arka uç sunucu tarafından verilen yönlendirmeleri yakalamak için yine de +ProxyPassReverse yönergesini +kullanmanız gerekeceğini unutmayın:

+ +
ProxyPassReverse "/images/" "http://imageserver.local/images/"
+ + +

Aynı kapsamda diğer RewriteRule'lar etkinse, +RewriteRule kullanmanız gerekebilir; çünkü +RewriteRule genellikle ProxyPass'tan önce +etki eder ve yapmaya çalıştığınız şeyi geçersiz kılabilir.

+ +
top
+
+

Ortam Değişkeni Sınaması

+ +

mod_rewrite, belirli bir ortam değişkeninin veya +istek başlığının varlığına veya yokluğuna bağlı olarak belirli bir +eylem yapmak için sıklıkla kullanılır. Bu, <If> yönergesi kullanılarak daha verimli bir +şekilde yapılabilir.

+ +

Örneğin, RewriteRule kullanılarak +www.example.com gibi kurallı bir konak adının +zorlanmasının yaygın senaryosunu ele alalım. Bu, burada gösterildiği +gibi <If> +yönergesi kullanılarak yapılabilir:

+ +
<If "req('Host') != 'www.example.com'">
+    Redirect "/" "http://www.example.com/"
+</If>
+ + +

Bu teknik, herhangi bir istek başlığına, yanıt başlığına veya ortam +değişkenine dayalı eylemler yapmak için kullanılabilir ve birçok yaygın +senaryoda mod_rewrite yerine geçer.

+ +

Özellikle <If> +bölümlerinde ve belirli diğer yönergelerde kullanabileceğiniz ifade +türlerine genel bir bakış için ifade +değerlendirme belgelerine bakın.

+ +
+
+

Mevcut Diller:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/avoid.html.zh-cn.utf8 b/docs/manual/rewrite/avoid.html.zh-cn.utf8 new file mode 100644 index 0000000000..0a91896083 --- /dev/null +++ b/docs/manual/rewrite/avoid.html.zh-cn.utf8 @@ -0,0 +1,236 @@ + + + + + +何时不使用 mod_rewrite - Apache HTTP 服务器 版本 2.5 + + + + + + + +
<-
+

何时不使用 mod_rewrite

+
+

可用语言:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ + +

本文档是 mod_rewrite +参考文档的补充。它描述了关于 +mod_rewrite 最重要的概念之一—— +即何时应避免使用它。

+ +

mod_rewrite 应被视为最后的手段, +当其他替代方案不能满足需求时才使用。在有更简单替代方案的情况下使用它, +会导致配置混乱、脆弱且难以维护。 +了解有哪些替代方案可用是掌握 mod_rewrite 的重要一步。

+ +

请注意,这些示例中的许多不会在你的特定服务器配置中直接生效, +因此理解它们非常重要,而不仅仅是将示例复制粘贴到你的配置中。

+ +

最常见的适合使用 mod_rewrite 的情况是, +最佳解决方案需要访问服务器配置文件,而你没有该访问权限。 +某些配置指令只能在服务器配置文件中使用。因此, +如果你处于只能使用 .htaccess 文件的托管环境中, +你可能需要借助 mod_rewrite。

+ +
+ +
top
+
+

简单重定向

+ + +

mod_alias 提供了 Redirect 和 RedirectMatch 指令, +它们提供了将一个 URL 重定向到另一个 URL 的方法。 +这种简单的将一个 URL 或一类 URL 重定向到其他地方的操作, +应使用这些指令而不是 +RewriteRule 来完成。 +RedirectMatch 允许你在重定向条件中包含正则表达式, +提供了使用 RewriteRule 的许多好处。

+ +

RewriteRule 的一个常见用途是重定向整类 URL。 +例如,/one 目录中的所有 URL 必须重定向到 +http://one.example.com/,或者所有 http +请求必须重定向到 https。

+ +

这些情况更适合使用 Redirect 指令处理。 +请记住,Redirect 会保留路径信息。也就是说, +对 URL /one 的重定向也会重定向其下的所有 URL, +例如 /one/two.html 和 /one/three/four.html。

+ +

要将 /one 下的 URL 重定向到 +http://one.example.com,请执行以下操作:

+ +
Redirect "/one/" "http://one.example.com/"
+ + +

要将一个主机名重定向到另一个,例如将 +example.com 重定向到 www.example.com, +请参阅规范主机名方案。

+ +

要将 http URL 重定向到 https, +请执行以下操作:

+ +
<VirtualHost *:80>
+    ServerName www.example.com
+    Redirect "/" "https://www.example.com/"
+</VirtualHost>
+
+<VirtualHost *:443>
+    ServerName www.example.com
+    # ... SSL 配置放在这里
+</VirtualHost>
+ + +

当同一作用域中存在其他 RewriteRule 指令时, +使用 RewriteRule 来完成此任务可能是合适的。 +这是因为,当 Redirect 和 RewriteRule +指令在同一作用域中时,无论它们在配置文件中的出现顺序如何, +RewriteRule 指令都会先执行。

+ +

对于 http 到 https 的重定向, +当你无权访问主服务器配置文件, +而被迫在 .htaccess 文件中执行此任务时, +使用 RewriteRule 是合适的。

+ +
top
+
+

URL 别名

+

Alias +指令提供了从 URI 到目录的映射——通常是 +DocumentRoot 之外的目录。 +虽然可以使用 mod_rewrite 执行此映射, +但出于简便性和性能原因,Alias +是首选方法。

+ +

使用 Alias

Alias "/cats" "/var/www/virtualhosts/felines/htdocs"
+
+ +

+当你无权访问服务器配置文件时,使用 mod_rewrite +执行此映射可能是合适的。Alias 只能在服务器或虚拟主机上下文中使用, +不能在 .htaccess 文件中使用。 +

+ +

如果你的服务器启用了 Options FollowSymLinks, +符号链接将是实现同样目标的另一种方式。

+
top
+
+

虚拟主机

+

虽然可以使用 mod_rewrite 处理虚拟主机, +但这很少是正确的方式。创建单独的 +<VirtualHost> +块几乎总是正确的做法。如果你有大量的虚拟主机, +可以考虑使用 mod_vhost_alias 来自动创建这些主机。

+ +

mod_macro 等模块对于动态创建大量虚拟主机也很有用。

+ +

当你使用的托管服务不提供服务器配置文件的访问权限, +你只能使用 .htaccess 文件进行配置时, +使用 mod_rewrite 创建虚拟主机可能是合适的。

+ +

请参阅使用 mod_rewrite 的虚拟主机文档, +了解如何实现此目的(如果这仍然看起来是正确的方法)。

+ +
top
+
+

简单代理

+ +

RewriteRule 提供了 [P] 标志,用于将重写后的 URI 通过 +mod_proxy 传递。

+ +
RewriteRule "^/?images(.*)" "http://imageserver.local/images$1" [P]
+ + +

但是,在许多情况下,当不需要实际的模式匹配时(如上面的示例所示), +ProxyPass 指令是更好的选择。 +上面的示例可以表示为:

+ +
ProxyPass "/images/" "http://imageserver.local/images/"
+ + +

请注意,无论你使用 +RewriteRule 还是 +ProxyPass, +你仍然需要使用 +ProxyPassReverse +指令来捕获后端服务器发出的重定向:

+ +
ProxyPassReverse "/images/" "http://imageserver.local/images/"
+ + +

当同一作用域中有其他 RewriteRule 生效时, +你可能需要使用 RewriteRule 代替, +因为 RewriteRule 通常会在 ProxyPass +之前生效,可能会抢先处理你要完成的操作。

+ +
top
+
+

环境变量测试

+ +

mod_rewrite 经常用于根据特定环境变量或请求头 +是否存在来执行特定操作。使用 +<If> +指令可以更高效地完成此操作。

+ +

例如,考虑使用 RewriteRule +来强制使用规范主机名(如 www.example.com 而不是 +example.com)的常见场景。可以使用 +<If> +指令来完成,如下所示:

+ +
<If "req('Host') != 'www.example.com'">
+    Redirect "/" "http://www.example.com/"
+</If>
+ + +

此技术可用于根据任何请求头、响应头或环境变量执行操作, +在许多常见场景中替代 mod_rewrite。

+ +

特别请参阅表达式求值文档, +了解在 <If> +配置段和某些其他指令中可以使用哪些类型的表达式。

+ +
+
+

可用语言:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/avoid.xml.meta b/docs/manual/rewrite/avoid.xml.meta index aa4a8b2c99..55fe7d27cf 100644 --- a/docs/manual/rewrite/avoid.xml.meta +++ b/docs/manual/rewrite/avoid.xml.meta @@ -10,7 +10,7 @@ de en es - fr + fr ja ko tr diff --git a/docs/manual/rewrite/flags.html b/docs/manual/rewrite/flags.html index 47f5ed3e95..3352e4560d 100644 --- a/docs/manual/rewrite/flags.html +++ b/docs/manual/rewrite/flags.html @@ -1,9 +1,33 @@ # GENERATED FROM XML -- DO NOT EDIT +URI: flags.html.de +Content-Language: de +Content-type: text/html; charset=ISO-8859-1 + URI: flags.html.en.utf8 Content-Language: en Content-type: text/html; charset=UTF-8 +URI: flags.html.es.utf8 +Content-Language: es +Content-type: text/html; charset=UTF-8 + URI: flags.html.fr.utf8 Content-Language: fr Content-type: text/html; charset=UTF-8 + +URI: flags.html.ja.utf8 +Content-Language: ja +Content-type: text/html; charset=UTF-8 + +URI: flags.html.ko.euc-kr +Content-Language: ko +Content-type: text/html; charset=EUC-KR + +URI: flags.html.tr.utf8 +Content-Language: tr +Content-type: text/html; charset=UTF-8 + +URI: flags.html.zh-cn.utf8 +Content-Language: zh-cn +Content-type: text/html; charset=UTF-8 diff --git a/docs/manual/rewrite/flags.html.de b/docs/manual/rewrite/flags.html.de new file mode 100644 index 0000000000..3ae015af25 --- /dev/null +++ b/docs/manual/rewrite/flags.html.de @@ -0,0 +1,915 @@ + + + + + +RewriteRule-Flags - Apache HTTP Server Version 2.5 + + + + + + + +
<-
+

RewriteRule-Flags

+
+

Verfügbare Sprachen:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ +

Dieses Dokument behandelt die Flags, die für die Direktive +RewriteRule verfügbar sind, +und bietet detaillierte Erklärungen und Beispiele.

+
+ +
top
+
+

Einführung

+

Das Verhalten einer RewriteRule +kann durch ein oder mehrere Flags modifiziert werden. Flags werden in +eckigen Klammern am Ende der Regel angegeben, und mehrere Flags werden +durch Kommas getrennt.

+
RewriteRule pattern target [Flag1,Flag2,Flag3]
+ + +

Jedes Flag hat (mit wenigen Ausnahmen) eine Kurzform, wie +CO, sowie eine Langform, wie cookie. +Obwohl es am häufigsten ist, die Kurzform zu verwenden, wird empfohlen, +sich mit der Langform vertraut zu machen, damit Sie sich merken können, +was jedes Flag bewirken soll. Einige Flags akzeptieren ein oder mehrere +Argumente. Flags unterscheiden nicht zwischen Groß- und Kleinschreibung.

+ +

Flags, die mit der Anfrage verknüpfte Metadaten ändern (T=, H=, E=), +haben im Verzeichniskontext und htaccess-Kontext keine Wirkung, wenn eine +Ersetzung (außer '-') während derselben Runde der Umschreibungsverarbeitung +durchgeführt wird.

+ +

Hier werden alle verfügbaren Flags vorgestellt, zusammen mit einem +Beispiel, wie Sie diese verwenden könnten.

+
top
+
+

B (Rückreferenzen maskieren)

+

Das [B]-Flag weist RewriteRule an, nicht-alphanumerische +Zeichen vor der Anwendung der Transformation zu maskieren.

+ +

mod_rewrite muss URLs demaskieren, bevor sie zugeordnet werden, +sodass Rückreferenzen zum Zeitpunkt ihrer Anwendung demaskiert sind. +Mit dem B-Flag werden nicht-alphanumerische Zeichen in Rückreferenzen +maskiert. Betrachten Sie beispielsweise die folgende Regel:

+ +

Für eine ähnliche Maskierung von Server-Variablen siehe die + "escape"-Zuordnungsfunktion

+ +
RewriteRule "^search/(.*)$" "/search.php?term=$1"
+ + +

Bei einem Suchbegriff von 'x & y/z' kodiert ein Browser diesen als +'x%20%26%20y%2Fz', sodass die Anfrage 'search/x%20%26%20y%2Fz' lautet. Ohne das B-Flag +wird diese Rewrite-Regel auf 'search.php?term=x & y/z' abgebildet, was +keine gültige URL ist und daher als +search.php?term=x%20&y%2Fz= kodiert würde, was nicht beabsichtigt war.

+ +

Mit gesetztem B-Flag bei derselben Regel werden die Parameter erneut +kodiert, bevor sie an die Ausgabe-URL übergeben werden, was zu einer korrekten +Zuordnung zu /search.php?term=x%20%26%20y%2Fz führt.

+ +
RewriteRule "^search/(.*)$" "/search.php?term=$1" [B,PT]
+ + +

Beachten Sie, dass Sie möglicherweise auch AllowEncodedSlashes auf On setzen müssen, +damit dieses spezielle Beispiel funktioniert, da httpd keine kodierten +Schrägstriche in URLs zulässt und bei deren Auftreten einen 404-Fehler +zurückgibt.

+ +

Diese Maskierung ist besonders notwendig in einer Proxy-Situation, +wenn das Backend bei einer nicht-maskierten URL Probleme haben könnte.

+ +

Eine Alternative zu diesem Flag ist die Verwendung einer RewriteCond, die gegen %{THE_REQUEST} prüft, welche Strings +in kodierter Form erfasst.

+ +

Ab Version 2.4.26 können Sie die Maskierung auf bestimmte Zeichen +in Rückreferenzen beschränken, indem Sie diese auflisten: [B=#?;]. +Hinweis: Das Leerzeichen kann in der Liste der zu maskierenden Zeichen +verwendet werden, aber Sie müssen das gesamte dritte Argument der +RewriteRule in Anführungszeichen +setzen und das Leerzeichen darf nicht das letzte Zeichen in der Liste sein.

+ +
# Leerzeichen und Fragezeichen maskieren. Die Anführungszeichen um das letzte Argument
+# sind erforderlich, wenn ein Leerzeichen enthalten ist.
+RewriteRule "^search/(.*)$" "/search.php?term=$1" "[B= ?]"
+ + +

Um die auf diese Weise maskierten Zeichen einzuschränken, siehe #flag_bne + und #flag_bctls

+
top
+
+

BNP|backrefnoplus (Leerzeichen nicht zu + maskieren)

+

Das [BNP]-Flag weist RewriteRule an, das Leerzeichen +in einer Rückreferenz zu %20 statt zu '+' zu maskieren. Nützlich, wenn die +Rückreferenz im Pfadteil statt im Query-String verwendet wird.

+ +
# Leerzeichen im Pfad zu %20 maskieren statt zu +, wie es bei Formularübermittlungen
+# über den Query-String verwendet wird
+RewriteRule "^search/(.*)$" "/search.php/$1" "[B,BNP]"
+ + +

Dieses Flag ist ab Version 2.4.26 verfügbar.

+
top
+
+

BCTLS

+

Das [BCTLS]-Flag ähnelt dem [B]-Flag, maskiert aber nur +Steuerzeichen und das Leerzeichen. Dies ist dieselbe Menge von +Zeichen, die abgelehnt werden, wenn sie unkodiert in den Query-String +kopiert werden.

+ +
# Steuerzeichen und Leerzeichen maskieren
+RewriteRule "^search/(.*)$" "/search.php/$1" "[BCTLS]"
+ + +

Dieses Flag ist ab Version 2.5.1 verfügbar.

+ +
top
+
+

BNE

+

Die Liste der Zeichen in [BNE=...] wird als Ausnahmen von den +Zeichen der [B]- oder [BCTLS]-Flags behandelt. Die aufgelisteten Zeichen +werden nicht maskiert.

+ +
# Standardzeichen maskieren, aber / beibehalten
+RewriteRule "^search/(.*)$" "/search.php?term=$1" "[B,BNE=/]"
+ + +

Dieses Flag ist ab Version 2.5.1 verfügbar.

+
top
+
+

C|chain

+

Das [C]- oder [chain]-Flag zeigt an, dass die RewriteRule mit der nächsten Regel +verkettet ist. Wenn die Regel übereinstimmt, wird sie wie gewohnt +verarbeitet und die Kontrolle geht an die nächste Regel über. Wenn sie +jedoch nicht übereinstimmt, werden die nächste Regel und alle weiteren +verketteten Regeln übersprungen.

+ +
top
+
+

CO|cookie

+

Das [CO]- oder [cookie]-Flag ermöglicht es Ihnen, ein Cookie zu setzen, +wenn eine bestimmte RewriteRule +übereinstimmt. Das Argument besteht aus drei erforderlichen und fünf +optionalen Feldern.

+ +

Die vollständige Syntax für das Flag einschließlich aller Attribute +lautet wie folgt:

+ +

+[CO=NAME:VALUE:DOMAIN:lifetime:path:secure:httponly:samesite] +

+ +

Wenn ein literales ':'-Zeichen in einem der Cookie-Felder benötigt wird, +steht eine alternative Syntax zur Verfügung. Um die alternative Syntax zu +verwenden, sollte der Cookie-"Name" mit einem ';'-Zeichen eingeleitet werden, +und die Feldtrenner sollten als ';' angegeben werden.

+ +

+[CO=;NAME;VALUE:MOREVALUE;DOMAIN;lifetime;path;secure;httponly;samesite] +

+ +

Sie müssen einen Namen, einen Wert und eine Domain angeben, damit das +Cookie gesetzt wird.

+ +
+
Domain
+
Die Domain, für die das Cookie gültig sein soll. Dies kann ein +Hostname sein, wie www.example.com, oder eine Domain, +wie .example.com. Sie muss aus mindestens zwei durch einen +Punkt getrennten Teilen bestehen. Das heißt, sie kann nicht einfach nur +.com oder .net sein. Cookies dieser Art werden +durch das Cookie-Sicherheitsmodell verboten.
+
+ +

Sie können optional auch die folgenden Werte setzen:

+ +
+
Lebensdauer
+
Die Zeit, für die das Cookie bestehen bleibt, in Minuten.
+
Ein Wert von 0 bedeutet, dass das Cookie nur für die aktuelle +Browser-Sitzung bestehen bleibt. Dies ist der Standardwert, wenn keiner +angegeben wird.
+
Ein negativer Wert bewirkt, dass das Cookie im Browser gelöscht wird.
+ +
Pfad
+
Der Pfad auf der aktuellen Website, für den das Cookie gültig ist, +wie /customers/ oder /files/download/.
+
Standardmäßig ist dies auf / gesetzt - also die gesamte +Website.
+ +
Secure
+
Wenn auf secure, true oder 1 +gesetzt, wird das Cookie nur über sichere (https-)Verbindungen +übertragen.
+ +
httponly
+
Wenn auf HttpOnly, true oder +1 gesetzt, wird das Cookie mit dem HttpOnly-Flag +versehen, was bedeutet, dass das Cookie für JavaScript-Code in Browsern, +die diese Funktion unterstützen, nicht zugänglich ist.
+ +
samesite
+
Wenn auf etwas anderes als false oder 0 gesetzt, +wird das SameSite-Attribut auf den angegebenen Wert gesetzt. +Typische Werte sind None, Lax und +Strict. Verfügbar ab Version 2.5.1.
+
+ +

Betrachten Sie dieses Beispiel:

+ +
RewriteEngine On
+RewriteRule   "^/index\.html"   "-" [CO=frontdoor:yes:.example.com:1440:/]
+ + +

In diesem Beispiel schreibt die Regel die Anfrage nicht um. +Das "-"-Umschreibungsziel weist mod_rewrite an, die Anfrage +unverändert weiterzuleiten. Stattdessen setzt sie ein Cookie +namens 'frontdoor' auf den Wert 'yes'. Das Cookie ist für jeden Host +in der .example.com-Domain gültig. Es läuft in 1440 +Minuten (24 Stunden) ab und wird für alle URIs zurückgegeben.

+ +
top
+
+

DPI|discardpath

+

Das DPI-Flag bewirkt, dass der PATH_INFO-Teil des umgeschriebenen URI +verworfen wird.

+

Dieses Flag ist ab Version 2.2.12 verfügbar.

+

Im Verzeichniskontext wird der URI, gegen den jede +RewriteRule prüft, aus der Verkettung der aktuellen +Werte von URI und PATH_INFO gebildet.

+ +

Der aktuelle URI kann der ursprünglich vom Client angeforderte URI sein, +das Ergebnis einer vorherigen Runde der mod_rewrite-Verarbeitung +oder das Ergebnis einer früheren Regel in der aktuellen Runde der +mod_rewrite-Verarbeitung.

+ +

Im Gegensatz dazu spiegelt der PATH_INFO, der vor jeder Regel an den +URI angehängt wird, nur den Wert von PATH_INFO vor dieser Runde der +mod_rewrite-Verarbeitung wider. Wenn daher große Teile +des URI in einer Ersetzung in mehreren RewriteRule-Direktiven +abgeglichen und kopiert werden, ohne zu berücksichtigen, welche Teile des +URI vom aktuellen PATH_INFO stammen, kann der endgültige URI mehrere +Kopien von PATH_INFO enthalten.

+ +

Verwenden Sie dieses Flag bei jeder Ersetzung, bei der der PATH_INFO, +der aus der vorherigen Zuordnung dieser Anfrage zum Dateisystem resultierte, +nicht von Interesse ist. Dieses Flag vergisst dauerhaft den PATH_INFO, +der vor dieser Runde der mod_rewrite-Verarbeitung festgelegt wurde. +PATH_INFO wird erst neu berechnet, wenn die aktuelle Runde der +mod_rewrite-Verarbeitung abgeschlossen ist. Nachfolgende Regeln +während dieser Runde der Verarbeitung sehen nur das direkte Ergebnis der +Ersetzungen, ohne angehängten PATH_INFO.

+
top
+
+

E|env

+

Mit dem [E]- oder [env]-Flag können Sie den Wert einer Umgebungsvariable +setzen. Beachten Sie, dass einige Umgebungsvariablen nach der Ausführung +der Regel gesetzt werden können, wodurch das von Ihnen Gesetzte überschrieben +wird. Siehe das Dokument zu Umgebungsvariablen +für weitere Details zur Funktionsweise von Umgebungsvariablen.

+ +

Die vollständige Syntax für dieses Flag lautet:

+ +
[E=VAR:VAL]
+[E=!VAR]
+ + +

VAL kann Rückreferenzen ($N oder +%N) enthalten, die expandiert werden.

+ +

In der Kurzform

+ +

+[E=VAR] +

+ +

können Sie die Umgebungsvariable namens VAR auf einen +leeren Wert setzen.

+ +

Die Form

+ +

+[E=!VAR] +

+ +

ermöglicht es, eine zuvor gesetzte Umgebungsvariable namens +VAR zu löschen.

+ +

Umgebungsvariablen können dann in verschiedenen Kontexten verwendet +werden, einschließlich CGI-Programmen, anderen RewriteRule-Direktiven +oder CustomLog-Direktiven.

+ +

Das folgende Beispiel setzt eine Umgebungsvariable namens 'image' auf +den Wert '1', wenn der angeforderte URI eine Bilddatei ist. Dann wird +diese Umgebungsvariable verwendet, um diese Anfragen aus dem +Zugriffsprotokoll auszuschließen.

+ +
RewriteRule "\.(png|gif|jpg)$"   "-" [E=image:1]
+CustomLog   "logs/access_log"    combined env=!image
+ + +

Beachten Sie, dass derselbe Effekt mit SetEnvIf erzielt werden kann. Diese +Technik wird als Beispiel angeboten, nicht als Empfehlung.

+
top
+
+

END

+

Die Verwendung des [END]-Flags beendet nicht nur die aktuelle Runde der +Umschreibungsverarbeitung (wie [L]), sondern verhindert auch jede +nachfolgende Umschreibungsverarbeitung im Verzeichniskontext (htaccess).

+ +

Dies gilt nicht für neue Anfragen, die aus externen Umleitungen +resultieren.

+
top
+
+

F|forbidden

+

Die Verwendung des [F]-Flags bewirkt, dass der Server einen +403-Forbidden-Statuscode an den Client zurückgibt. Obwohl dasselbe +Verhalten mit der Deny-Direktive +erreicht werden kann, ermöglicht dies mehr Flexibilität bei der Zuweisung +eines Forbidden-Status.

+ +

Die folgende Regel verbietet das Herunterladen von .exe-Dateien +von Ihrem Server.

+ +
RewriteRule "\.exe"   "-" [F]
+ + +

Dieses Beispiel verwendet die "-"-Syntax für das Umschreibungsziel, +was bedeutet, dass der angeforderte URI nicht geändert wird. Es gibt +keinen Grund, zu einem anderen URI umzuschreiben, wenn Sie die Anfrage +verweigern möchten.

+ +

Bei der Verwendung von [F] wird ein [L] impliziert - das heißt, die +Antwort wird sofort zurückgegeben und keine weiteren Regeln werden +ausgewertet.

+ +
top
+
+

G|gone

+

Das [G]-Flag zwingt den Server, einen 410-Gone-Status mit der +Antwort zurückzugeben. Dies zeigt an, dass eine Ressource früher +verfügbar war, aber nicht mehr verfügbar ist.

+ +

Wie beim [F]-Flag verwenden Sie typischerweise die "-"-Syntax für das +Umschreibungsziel, wenn Sie das [G]-Flag verwenden:

+ +
RewriteRule "oldproduct"   "-" [G,NC]
+ + +

Bei der Verwendung von [G] wird ein [L] impliziert - das heißt, die +Antwort wird sofort zurückgegeben und keine weiteren Regeln werden +ausgewertet.

+ +
top
+
+

H|handler

+

Erzwingt, dass die resultierende Anfrage mit dem angegebenen +Handler behandelt wird. Beispielsweise könnte man dies verwenden, um +alle Dateien ohne Dateiendung vom PHP-Handler parsen zu lassen:

+ +
RewriteRule "!\."  "-" [H=application/x-httpd-php]
+ + +

+Der obige reguläre Ausdruck - !\. - stimmt mit jeder Anfrage +überein, die kein literales .-Zeichen enthält. +

+ +

Dies kann auch verwendet werden, um den Handler basierend auf +bestimmten Bedingungen zu erzwingen. Beispielsweise ermöglicht der +folgende Ausschnitt, der im Server-Kontext verwendet wird, dass +.php-Dateien von mod_php angezeigt +werden, wenn sie mit der .phps-Erweiterung angefordert werden:

+ +
RewriteRule "^(/source/.+\.php)s$" "$1" [H=application/x-httpd-php-source]
+ + +

Der obige reguläre Ausdruck - ^(/source/.+\.php)s$ - stimmt +mit jeder Anfrage überein, die mit /source/ beginnt, gefolgt von +einem oder mehreren Zeichen, gefolgt von .phps. Die Rückreferenz +$1 verweist auf die erfasste Übereinstimmung innerhalb der Klammern des +regulären Ausdrucks.

+
top
+
+

L|last

+

Das [L]-Flag bewirkt, dass mod_rewrite die Verarbeitung +des Regelsatzes stoppt. In den meisten Kontexten bedeutet dies, dass bei +Übereinstimmung der Regel keine weiteren Regeln verarbeitet werden. Dies +entspricht dem last-Befehl in Perl oder dem break-Befehl +in C. Verwenden Sie dieses Flag, um anzuzeigen, dass die aktuelle Regel +sofort angewendet werden soll, ohne weitere Regeln zu berücksichtigen.

+ +

Wenn Sie RewriteRule in +.htaccess-Dateien oder in +<Directory>-Abschnitten +verwenden, ist es wichtig, ein gewisses Verständnis dafür zu haben, wie die +Regeln verarbeitet werden. Die vereinfachte Form davon ist, dass nach der +Verarbeitung der Regeln die umgeschriebene Anfrage an die URL-Parsing-Engine +zurückgegeben wird. Es ist möglich, dass bei der Verarbeitung der +umgeschriebenen Anfrage die .htaccess-Datei oder der +<Directory>-Abschnitt +erneut angetroffen wird und der Regelsatz von Anfang an erneut durchlaufen +wird. Am häufigsten geschieht dies, wenn eine der Regeln eine Umleitung +auslöst - entweder intern oder extern - wodurch der Anfrageprozess von +vorne beginnt.

+ +

Es ist daher wichtig, wenn Sie RewriteRule-Direktiven in einem dieser +Kontexte verwenden, dass Sie explizite Maßnahmen ergreifen, um +Regelschleifen zu vermeiden, und sich nicht ausschließlich auf das [L]-Flag +verlassen, um die Ausführung einer Reihe von Regeln zu beenden, wie +unten gezeigt.

+ +

Ein alternatives Flag, [END], kann verwendet werden, um nicht nur die +aktuelle Runde der Umschreibungsverarbeitung zu beenden, sondern auch +jede nachfolgende Umschreibungsverarbeitung im Verzeichniskontext (htaccess) +zu verhindern. Dies gilt nicht für neue Anfragen, die aus externen +Umleitungen resultieren.

+ +

Das hier gegebene Beispiel schreibt jede Anfrage auf +index.php um und gibt die ursprüngliche Anfrage als +Query-String-Argument an index.php weiter. Die RewriteCond stellt jedoch sicher, dass die +RewriteRule übersprungen wird, +wenn die Anfrage bereits für index.php bestimmt ist.

+ +
RewriteBase "/"
+RewriteCond "%{REQUEST_URI}" !=/index.php
+RewriteRule "^(.*)"          "/index.php?req=$1" [L,PT]
+ +
top
+
+

N|next

+

+Das [N]-Flag bewirkt, dass der Regelsatz von oben neu gestartet wird, +wobei das bisherige Ergebnis des Regelsatzes als Ausgangspunkt verwendet wird. +Verwenden Sie es mit äußerster Vorsicht, da es zu Schleifen führen kann. +

+

+Das [Next]-Flag könnte beispielsweise verwendet werden, wenn Sie einen +bestimmten String oder Buchstaben wiederholt in einer Anfrage ersetzen +möchten. Das hier gezeigte Beispiel ersetzt A überall in einer Anfrage +durch B und fährt damit fort, bis keine weiteren A mehr zu ersetzen sind. +

+
RewriteRule "(.*)A(.*)" "$1B$2" [N]
+ +

Sie können sich dies als while-Schleife vorstellen: Solange +dieses Muster noch übereinstimmt (d.h. solange der URI noch ein +A enthält), führe diese Ersetzung durch (d.h. ersetze das +A durch ein B).

+ +

Ab Version 2.5.0 gibt dieses Modul nach 10.000 Iterationen einen Fehler +zurück, um vor unbeabsichtigten Schleifen zu schützen. Eine alternative +maximale Anzahl von Iterationen kann durch Hinzufügen zum N-Flag angegeben +werden.

+
# Bereit, 1 Zeichen pro Schleifendurchlauf zu ersetzen
+RewriteRule "(.+)[><;]$" "$1" [N=32000]
+# ... oder nach 10 Schleifen aufgeben
+RewriteRule "(.+)[><;]$" "$1" [N=10]
+ + +
top
+
+

NC|nocase

+

Die Verwendung des [NC]-Flags bewirkt, dass die RewriteRule ohne Berücksichtigung der +Groß-/Kleinschreibung abgeglichen wird. Das heißt, es spielt keine Rolle, +ob Buchstaben im abgeglichenen URI als Groß- oder Kleinbuchstaben +erscheinen.

+ +

Im folgenden Beispiel wird jede Anfrage nach einer Bilddatei an Ihren +dedizierten Bildserver weitergeleitet. Der Abgleich erfolgt ohne +Berücksichtigung der Groß-/Kleinschreibung, sodass beispielsweise sowohl +.jpg- als auch .JPG-Dateien akzeptiert werden.

+ +
RewriteRule "(.*\.(jpg|gif|png))$" "http://images.example.com$1" [P,NC]
+ +
top
+
+

NE|noescape

+

Standardmäßig werden bei einer RewriteRule, +die zu einer externen Umleitung führt, alle Zeichen in der Ausgabe, die +nicht in der folgenden sicheren Menge enthalten sind, in ihre +Hexcode-Äquivalente (prozentcodiert) umgewandelt:

+ +
    +
  • Alphanumerische Zeichen: A-Z, a-z, + 0-9
  • +
  • Sonderzeichen: $-_.+!*'(),:;@&=/~
  • +
+ +

Beispielsweise würde # in %23 umgewandelt +und ? in %3F. Das %-Zeichen +wird ebenfalls maskiert (zu %25), was bedeutet, dass jede +bereits vorhandene Prozentkodierung in der Ersetzung doppelt kodiert wird.

+ +

Die Verwendung des [NE]-Flags verhindert diese Maskierung und ermöglicht, +dass Zeichen wie # und ? unverändert an die +Umleitungs-URL weitergegeben werden.

+ +
RewriteRule "^/anchor/(.+)" "/bigpage.html#$1" [NE,R]
+ + +

+Das obige Beispiel leitet /anchor/xyz auf +/bigpage.html#xyz um. Ohne [NE] würde das #-Zeichen in +sein Hexcode-Äquivalent %23 umgewandelt, was dann zu einem +404-Nicht-Gefunden-Fehler führen würde. +

+ +
top
+
+

NS|nosubreq

+

Die Verwendung des [NS]-Flags verhindert, dass die Regel auf +Unteranfragen angewendet wird. Beispielsweise ist eine Seite, die mittels +SSI (Server Side Include) eingebunden wird, eine Unteranfrage, und Sie +möchten möglicherweise Umschreibungen bei diesen Unteranfragen vermeiden. +Auch wenn mod_dir versucht, Informationen über mögliche +Standarddateien des Verzeichnisses herauszufinden (wie +index.html-Dateien), handelt es sich um eine interne +Unteranfrage, und Sie möchten häufig Umschreibungen bei solchen +Unteranfragen vermeiden. Bei Unteranfragen ist es nicht immer nützlich +und kann sogar Fehler verursachen, wenn der vollständige Regelsatz +angewendet wird. Verwenden Sie dieses Flag, um problematische Regeln +auszuschließen.

+ +

Um zu entscheiden, ob Sie diese Regel verwenden sollten oder nicht: Wenn +Sie URLs mit CGI-Skripten voranstellen, um deren Verarbeitung durch das +CGI-Skript zu erzwingen, werden Sie wahrscheinlich bei Unteranfragen auf +Probleme (oder erheblichen Overhead) stoßen. In diesen Fällen verwenden +Sie dieses Flag.

+ +

+Bilder, JavaScript-Dateien oder CSS-Dateien, die als Teil einer HTML-Seite +geladen werden, sind keine Unteranfragen - der Browser fordert sie als +separate HTTP-Anfragen an. +

+
top
+
+

P|proxy

+

Die Verwendung des [P]-Flags bewirkt, dass die Anfrage von +mod_proxy behandelt und über eine Proxy-Anfrage verarbeitet +wird. Wenn Sie beispielsweise möchten, dass alle Bildanfragen von einem +Backend-Bildserver behandelt werden, könnten Sie Folgendes tun:

+ +
RewriteRule "/(.*)\.( jpg|gif|png)$" "http://images.example.com/$1.$2" [P]
+ + +

Die Verwendung des [P]-Flags impliziert [L] - das heißt, die Anfrage +wird sofort durch den Proxy geleitet und nachfolgende Regeln werden nicht +berücksichtigt.

+ +

+Sie müssen sicherstellen, dass der Ersetzungsstring ein gültiger URI ist +(typischerweise beginnend mit http://hostname), +der von mod_proxy verarbeitet werden kann. Andernfalls +erhalten Sie einen Fehler vom Proxy-Modul. Verwenden Sie dieses Flag, +um eine leistungsfähigere Implementierung der ProxyPass-Direktive zu erreichen und +entfernte Inhalte in den Namensraum des lokalen Servers einzubinden.

+ +
+

Sicherheitswarnung

+

Seien Sie vorsichtig beim Aufbau der Ziel-URL der Regel und bedenken Sie +die Sicherheitsauswirkungen, wenn Sie dem Client Einfluss auf die Menge +der URLs gewähren, für die Ihr Server als Proxy fungiert. Stellen Sie +sicher, dass Schema und Hostname-Teil der URL entweder fest sind oder dem +Client keinen unangemessenen Einfluss gewähren.

+
+ +
+

Leistungswarnung

+

Die Verwendung dieses Flags löst die Nutzung von mod_proxy aus, +ohne Verwaltung persistenter Verbindungen, da in diesem Fall der +Standard-Worker verwendet wird, der kein Connection-Pooling/-Reuse +durchführt.

+

Um persistente Verbindungen zu nutzen, müssen Sie einen +Proxy-Block mindestens für den +Schema- und Host-Teil der Ziel-URL einrichten, der eine +ProxySet-Direktive enthält, +in der Sie z.B. ein Timeout setzen.

+

Wenn Sie es mit ProxyPass oder +ProxyPassMatch einrichten, +werden persistente Verbindungen automatisch verwendet.

+
+ +

Hinweis: mod_proxy muss aktiviert sein, um dieses +Flag verwenden zu können.

+ +
top
+
+

PT|passthrough

+ +

+Das Ziel (oder der Ersetzungsstring) in einer RewriteRule wird +standardmäßig als Dateipfad behandelt. Die Verwendung des [PT]-Flags +bewirkt, dass es stattdessen als URI behandelt wird. Das heißt, die +Verwendung des [PT]-Flags bewirkt, dass das Ergebnis der RewriteRule durch die +URL-Zuordnung zurückgeleitet wird, sodass standortbasierte Zuordnungen +wie Alias, Redirect oder ScriptAlias beispielsweise wirksam +werden können. +

+ +

+Wenn Sie beispielsweise einen Alias +für /icons haben und eine RewriteRule dorthin zeigt, sollten +Sie das [PT]-Flag verwenden, um sicherzustellen, dass der +Alias ausgewertet wird. +

+ +
Alias "/icons" "/usr/local/apache/icons"
+RewriteRule "/pics/(.+)\.jpg$" "/icons/$1.gif" [PT]
+ + +

+Das Weglassen des [PT]-Flags in diesem Fall führt dazu, dass der Alias +ignoriert wird und ein 'Datei nicht gefunden'-Fehler zurückgegeben wird. +

+ +

Das PT-Flag impliziert das L-Flag: +Die Umschreibung wird gestoppt, um die Anfrage an die +nächste Verarbeitungsphase weiterzuleiten.

+ +

Beachten Sie, dass das PT-Flag in Verzeichniskontexten +wie <Directory>-Abschnitten +oder in .htaccess-Dateien impliziert ist. Die einzige +Möglichkeit, dies zu umgehen, ist die Umschreibung zu -.

+ +
top
+
+

QSA|qsappend

+

+Wenn der Ersetzungs-URI einen Query-String enthält, ist das Standardverhalten +von RewriteRule, den vorhandenen +Query-String zu verwerfen und durch den neu generierten zu ersetzen. +Die Verwendung des [QSA]-Flags bewirkt, dass die Query-Strings kombiniert +werden. +

+ +

Betrachten Sie die folgende Regel:

+ +
RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]
+ + +

Mit dem [QSA]-Flag wird eine Anfrage für /pages/123?one=two +auf /page.php?page=123&one=two abgebildet. Ohne das +[QSA]-Flag wird dieselbe Anfrage auf /page.php?page=123 +abgebildet - das heißt, der vorhandene Query-String wird verworfen. +

+
top
+
+

QSD|qsdiscard

+

+Wenn der angeforderte URI einen Query-String enthält und der Ziel-URI +nicht, ist das Standardverhalten von RewriteRule, diesen Query-String in den +Ziel-URI zu kopieren. Die Verwendung des [QSD]-Flags bewirkt, dass der +Query-String verworfen wird. +

+ +

Dieses Flag ist ab Version 2.4.0 verfügbar.

+ +

+Die gemeinsame Verwendung von [QSD] und [QSA] führt dazu, dass [QSD] +Vorrang hat. +

+ +

+Wenn der Ziel-URI einen Query-String hat, wird das Standardverhalten +beobachtet - das heißt, der ursprüngliche Query-String wird verworfen und +durch den Query-String im RewriteRule-Ziel-URI ersetzt. +

+ +
top
+
+

QSL|qslast

+

+Standardmäßig trennt das erste (linkeste) Fragezeichen in der Ersetzung +den Pfad vom Query-String. Die Verwendung des [QSL]-Flags weist +RewriteRule an, stattdessen +die beiden Komponenten beim letzten (rechtesten) Fragezeichen zu trennen. +

+ +

+Dies ist nützlich bei der Zuordnung zu Dateien, die literale Fragezeichen +in ihrem Dateinamen haben. Wenn kein Query-String in der Ersetzung +verwendet wird, kann ein Fragezeichen in Kombination mit diesem Flag +angehängt werden. +

+ +

Dieses Flag ist ab Version 2.4.19 verfügbar.

+ +
top
+
+

R|redirect

+

+Die Verwendung des [R]-Flags bewirkt, dass eine HTTP-Umleitung an den +Browser gesendet wird. Wenn eine vollqualifizierte URL angegeben wird +(das heißt, einschließlich http://servername/), wird eine +Umleitung an diesen Ort durchgeführt. Andernfalls werden das aktuelle +Protokoll, der Servername und die Portnummer verwendet, um die URL zu +generieren, die mit der Umleitung gesendet wird. +

+ +

+Jeder gültige HTTP-Antwort-Statuscode kann angegeben werden, +mit der Syntax [R=305], wobei standardmäßig ein 302-Statuscode verwendet +wird, wenn keiner angegeben ist. Der angegebene Statuscode muss nicht +unbedingt ein Umleitungs-(3xx-)Statuscode sein. Wenn jedoch ein Statuscode +außerhalb des Umleitungsbereichs (300-399) liegt, wird der +Ersetzungsstring vollständig verworfen und die Umschreibung gestoppt, +als ob L verwendet worden wäre.

+ +

Zusätzlich zu Antwort-Statuscodes können Sie auch den Umleitungsstatus +mit ihren symbolischen Namen angeben: temp (Standard), +permanent oder seeother.

+ +

+Sie werden fast immer [R] in Verbindung mit [L] verwenden wollen (also +[R,L]), da das [R]-Flag allein http://thishost[:thisport] dem +URI voranstellt, dies aber dann an die nächste Regel im Regelsatz +weitergibt, was häufig zu 'Ungültiger URI in Anfrage'-Warnungen führen kann. +

+ +

Hinweis: httpd unterstützt nur Statuscodes, die in der HTTP-Spezifikation +enthalten sind. Die Verwendung eines nicht erkannten Statuscodes führt zu +einem 500-Fehler und einer Fehlermeldung im Fehlerprotokoll.

+ +
top
+
+

S|skip

+

Das [S]-Flag wird verwendet, um Regeln zu überspringen, die Sie nicht +ausführen möchten. Die Syntax des Skip-Flags ist [S=N], wobei +N die Anzahl der zu überspringenden Regeln angibt (vorausgesetzt, +die RewriteRule und alle +vorhergehenden RewriteCond-Direktiven +stimmen überein). Dies kann als goto-Anweisung in Ihrem +Umschreibungsregelsatz betrachtet werden. Im folgenden Beispiel möchten +wir die RewriteRule nur +ausführen, wenn der angeforderte URI keiner tatsächlichen Datei entspricht.

+ +
# Ist die Anfrage für eine nicht existierende Datei?
+RewriteCond "%{REQUEST_FILENAME}" !-f
+RewriteCond "%{REQUEST_FILENAME}" !-d
+# Falls ja, überspringe diese zwei RewriteRules
+RewriteRule ".?"                  "-" [S=2]
+
+RewriteRule "(.*\.gif)"           "images.php?$1"
+RewriteRule "(.*\.html)"          "docs.php?$1"
+ + +

Diese Technik ist nützlich, weil eine RewriteCond nur auf die unmittelbar +darauf folgende RewriteRule +angewendet wird. Wenn Sie also eine RewriteCond auf mehrere +RewriteRules anwenden möchten, besteht eine Möglichkeit darin, +diese Bedingungen zu negieren und eine RewriteRule mit einem +[Skip]-Flag hinzuzufügen. Sie können damit Pseudo-if-then-else-Konstrukte +erstellen: Die letzte Regel der then-Klausel wird zu +skip=N, wobei N die Anzahl der Regeln in der +else-Klausel ist:

+
# Existiert die Datei?
+RewriteCond "%{REQUEST_FILENAME}" !-f
+RewriteCond "%{REQUEST_FILENAME}" !-d
+# Erstelle ein if-then-else-Konstrukt, indem 3 Zeilen übersprungen werden, wenn wir zur "else"-Klausel wollten.
+RewriteRule ".?"                  "-" [S=3]
+
+# WENN die Datei existiert, dann:
+    RewriteRule "(.*\.gif)"  "images.php?$1"
+    RewriteRule "(.*\.html)" "docs.php?$1"
+    # Überspringe die "else"-Klausel.
+    RewriteRule ".?"         "-" [S=1]
+# SONST...
+    RewriteRule "(.*)"       "404.php?file=$1"
+# ENDE
+ + +

Es ist wahrscheinlich einfacher, diese Art der Konfiguration mit den +Direktiven <If>, <ElseIf> und <Else> zu erreichen.

+ +
top
+
+

T|type

+

Setzt den MIME-Typ, mit dem die resultierende Antwort gesendet wird. +Dies hat denselben Effekt wie die AddType-Direktive.

+ +

Sie könnten beispielsweise die folgende Technik verwenden, um +Perl-Quellcode als Klartext bereitzustellen, wenn er auf eine bestimmte +Weise angefordert wird:

+ +
# .pl-Dateien als Klartext bereitstellen
+RewriteRule "\.pl$"  "-" [T=text/plain]
+ + +

Oder wenn Sie eine Kamera haben, die JPEG-Bilder ohne Dateiendungen +produziert, könnten Sie erzwingen, dass diese Bilder mit dem korrekten +MIME-Typ bereitgestellt werden, basierend auf ihren Dateinamen:

+ +
# Dateien mit 'IMG' im Namen sind jpg-Bilder.
+RewriteRule "IMG"  "-" [T=image/jpg]
+ + +

Bitte beachten Sie, dass dies ein triviales Beispiel ist und besser mit +<FilesMatch> gelöst werden +könnte. Berücksichtigen Sie immer die alternativen Lösungen für ein Problem, +bevor Sie auf Umschreibung zurückgreifen, die stets eine weniger +effiziente Lösung darstellt als die Alternativen.

+ +

+Bei Verwendung im Verzeichniskontext verwenden Sie nur - (Bindestrich) +als Ersetzung für die gesamte Runde der mod_rewrite-Verarbeitung, +da sonst der mit diesem Flag gesetzte MIME-Typ durch eine interne +Neuverarbeitung verloren geht (einschließlich nachfolgender Runden der +mod_rewrite-Verarbeitung). Das L-Flag kann in +diesem Kontext nützlich sein, um die aktuelle Runde der +mod_rewrite-Verarbeitung zu beenden.

+
top
+
+

UnsafeAllow3F

+

Das Setzen dieses Flags ist erforderlich, um eine Umschreibung + fortzusetzen, wenn die zu schreibende HTTP-Anfrage ein kodiertes + Fragezeichen '%3f' enthält und das umgeschriebene Ergebnis ein '?' in + der Ersetzung hat. Dies schützt vor einer bösartigen URL, die eine + Erfassung und Neuersetzung des kodierten Fragezeichens ausnutzt.

+
top
+
+

UnsafePrefixStat

+

Das Setzen dieses Flags ist erforderlich bei Server-Kontext-Ersetzungen, + die mit einer Variable oder Rückreferenz beginnen und zu einem + Dateisystempfad aufgelöst werden. Diesen Ersetzungen wird nicht das + Document Root vorangestellt. Dies schützt vor einer bösartigen URL, + die die expandierte Ersetzung auf einen unerwarteten + Dateisystemstandort abbilden lässt.

+ +

Available in Apache HTTP Server 2.5.1 and later.

+
top
+
+

UNC

+

Das Setzen dieses Flags verhindert das Zusammenführen mehrerer + führender Schrägstriche, wie sie in Windows-UNC-Pfaden verwendet werden. + Das Flag ist nicht erforderlich, wenn die Regelersetzung mit mehreren + literalen Schrägstrichen beginnt.

+ +

Available in Apache HTTP Server 2.5.1 and later.

+
+
+

Verfügbare Sprachen:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/flags.html.en.utf8 b/docs/manual/rewrite/flags.html.en.utf8 index 8d95f38077..4ce83bd21d 100644 --- a/docs/manual/rewrite/flags.html.en.utf8 +++ b/docs/manual/rewrite/flags.html.en.utf8 @@ -23,8 +23,14 @@

RewriteRule Flags

-

Available Languages:  en  | - fr 

+

Available Languages:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

This document discusses the flags which are available to the @@ -871,8 +877,14 @@ The L flag can be useful in this context to end the

Available in Apache HTTP Server 2.5.1 and later.

-

Available Languages:  en  | - fr 

+

Available Languages:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+ + + +
<-
+

Banderas de RewriteRule

+
+

Idiomas disponibles:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ +

Este documento describe las banderas que están disponibles para la +directiva RewriteRule, +proporcionando explicaciones detalladas y ejemplos.

+
+ +
top
+
+

Introducción

+

Una RewriteRule puede tener +su comportamiento modificado por una o más banderas. Las banderas se incluyen entre +corchetes al final de la regla, y múltiples banderas se separan +con comas.

+
RewriteRule pattern target [Flag1,Flag2,Flag3]
+ + +

Cada bandera (con algunas excepciones) tiene una forma corta, como +CO, así como una forma más larga, como cookie. +Aunque es más común usar +la forma corta, se recomienda que se familiarice con la +forma larga, para que recuerde qué se supone que hace cada bandera. +Algunas banderas toman uno o más argumentos. Las banderas no distinguen entre mayúsculas y minúsculas.

+ +

Las banderas que alteran metadatos asociados con la solicitud (T=, H=, E=) +no tienen efecto en contexto per-directorio y htaccess, cuando una sustitución +(distinta de '-') se realiza durante la misma ronda de procesamiento de reescritura. +

+ +

Aquí se presentan cada una de las banderas disponibles, junto con un ejemplo +de cómo podría usarlas.

+
top
+
+

B (escapar referencias inversas)

+

La bandera [B] indica a RewriteRule que escape los caracteres no alfanuméricos +antes de aplicar la transformación.

+ +

mod_rewrite tiene que desescapar URLs antes de mapearlas, +por lo que las referencias inversas se desescapan en el momento en que se aplican. +Usando la bandera B, los caracteres no alfanuméricos en las referencias inversas +se escaparán. Por ejemplo, considere la regla:

+ +

Para un escape similar de variables del servidor, vea + la función de mapeo "escape"

+ + +
RewriteRule "^search/(.*)$" "/search.php?term=$1"
+ + +

Dado un término de búsqueda de 'x & y/z', un navegador lo codificará como +'x%20%26%20y%2Fz', haciendo la solicitud 'search/x%20%26%20y%2Fz'. Sin la bandera B, +esta regla de reescritura mapeará a 'search.php?term=x & y/z', que +no es una URL válida, y por lo tanto sería codificada como +search.php?term=x%20&y%2Fz=, que no era lo que se pretendía.

+ +

Con la bandera B establecida en esta misma regla, los parámetros se re-codifican +antes de pasarse a la URL de salida, resultando en un mapeo correcto a +/search.php?term=x%20%26%20y%2Fz.

+ +
RewriteRule "^search/(.*)$" "/search.php?term=$1" [B,PT]
+ + +

Tenga en cuenta que también puede necesitar establecer AllowEncodedSlashes a On para que este +ejemplo particular funcione, ya que httpd no permite barras codificadas en URLs, y +devuelve un 404 si ve una.

+ +

Este escape es particularmente necesario en una situación de proxy, +cuando el backend puede fallar si se le presenta una URL sin escapar.

+ +

Una alternativa a esta bandera es usar una RewriteCond para capturar contra %{THE_REQUEST} que capturará +cadenas en la forma codificada.

+ +

En 2.4.26 y posterior, puede limitar el escape a caracteres específicos +en las referencias inversas listándolos: [B=#?;]. Nota: El carácter +de espacio puede usarse en la lista de caracteres a escapar, pero debe entrecomillar +el tercer argumento completo de RewriteRule +y el espacio no debe ser el último carácter en la lista.

+ +
# Escapar espacios y signos de interrogación. Las comillas alrededor del argumento final
+# son necesarias cuando se incluye un espacio.
+RewriteRule "^search/(.*)$" "/search.php?term=$1" "[B= ?]"
+ + +

Para limitar los caracteres escapados de esta manera, vea #flag_bne + y #flag_bctls

+
top
+
+

BNP|backrefnoplus (no escapar espacio a +)

+

La bandera [BNP] indica a RewriteRule que escape el carácter de espacio +en una referencia inversa a %20 en lugar de '+'. Útil cuando la referencia inversa +se usará en el componente de ruta en lugar de la cadena de consulta.

+ +
# Escapar espacios a %20 en la ruta en lugar de + como se usa en el envío de formularios a través de
+# la cadena de consulta
+RewriteRule "^search/(.*)$" "/search.php/$1" "[B,BNP]"
+ + + +

Esta bandera está disponible en la versión 2.4.26 y posterior.

+
top
+
+

BCTLS

+

La bandera [BCTLS] es similar a la bandera [B], pero solo escapa +caracteres de control y el carácter de espacio. Este es el mismo conjunto de +caracteres rechazados cuando se copian en la cadena de consulta sin codificar. +

+ +
# Escapar caracteres de control y espacios
+RewriteRule "^search/(.*)$" "/search.php/$1" "[BCTLS]"
+ + +

Esta bandera está disponible en la versión 2.5.1 y posterior.

+ +
top
+
+

BNE

+

La lista de caracteres en [BNE=...] se trata como exclusiones de los +caracteres de las banderas [B] o [BCTLS]. Los caracteres listados no serán +escapados. +

+ +
# Escapar los caracteres predeterminados, pero dejar /
+RewriteRule "^search/(.*)$" "/search.php?term=$1" "[B,BNE=/]"
+ + +

Esta bandera está disponible en la versión 2.5.1 y posterior.

+
top
+
+

C|chain

+

La bandera [C] o [chain] indica que la RewriteRule está encadenada a la siguiente +regla. Es decir, si la regla coincide, entonces se procesa como de costumbre y +el control pasa a la siguiente regla. Sin embargo, si no coincide, entonces +la siguiente regla, y cualquier otra regla que esté encadenada, se +omiten.

+ +
top
+
+

CO|cookie

+

La bandera [CO], o [cookie], le permite establecer una cookie cuando una +RewriteRule particular +coincide. El argumento consiste en tres campos obligatorios y cinco +campos opcionales.

+ +

La sintaxis completa para la bandera, incluyendo todos los atributos, es la +siguiente:

+ +

+[CO=NAME:VALUE:DOMAIN:lifetime:path:secure:httponly:samesite] +

+ +

Si se necesita un carácter literal ':' en cualquiera de los campos de la cookie, está disponible una +sintaxis alternativa. Para optar por la sintaxis alternativa, el +"Name" de la cookie debe ir precedido por un carácter ';', y los separadores de campo deben +especificarse como ';'.

+ +

+[CO=;NAME;VALUE:MOREVALUE;DOMAIN;lifetime;path;secure;httponly;samesite] +

+ +

Debe declarar un nombre, un valor y un dominio para que la cookie se establezca.

+ +
+
Dominio
+
El dominio para el cual desea que la cookie sea válida. Este puede ser un +nombre de host, como www.example.com, o puede ser un dominio, +como .example.com. Debe tener al menos dos partes +separadas por un punto. Es decir, no puede ser simplemente .com o +.net. Las cookies de ese tipo están prohibidas por el modelo de +seguridad de cookies.
+
+ +

Opcionalmente también puede establecer los siguientes valores:

+ +
+
Tiempo de vida
+
El tiempo durante el cual la cookie persistirá, en minutos.
+
Un valor de 0 indica que la cookie persistirá solo durante la +sesión actual del navegador. Este es el valor predeterminado si no se +especifica ninguno.
+
Un valor negativo causa que la cookie sea eliminada en el navegador.
+ +
Ruta
+
La ruta, en el sitio web actual, para la cual la cookie es válida, +como /customers/ o /files/download/.
+
Por defecto, esto se establece a / - es decir, todo el +sitio web.
+ +
Secure
+
Si se establece a secure, true, o 1, +la cookie solo se permitirá ser transmitida a través de conexiones seguras (https).
+ +
httponly
+
Si se establece a HttpOnly, true, o +1, la cookie tendrá la bandera HttpOnly establecida, +lo que significa que la cookie es inaccesible para código JavaScript en +navegadores que soportan esta característica.
+ +
samesite
+
Si se establece a algo distinto de false o 0, el atributo SameSite +se establece al valor especificado. Valores típicos son None, +Lax, y Strict. Disponible en 2.5.1 y posterior.
+
+ + +

Considere este ejemplo:

+ +
RewriteEngine On
+RewriteRule   "^/index\.html"   "-" [CO=frontdoor:yes:.example.com:1440:/]
+ + +

En el ejemplo dado, la regla no reescribe la solicitud. +El destino de reescritura "-" le dice a mod_rewrite que pase la solicitud +sin cambios. En su lugar, establece una cookie +llamada 'frontdoor' con un valor de 'yes'. La cookie es válida para cualquier host +en el dominio .example.com. Se establece para expirar en 1440 +minutos (24 horas) y se devuelve para todas las URIs.

+ +
top
+
+

DPI|discardpath

+

La bandera DPI causa que la porción PATH_INFO de la URI reescrita sea +descartada.

+

Esta bandera está disponible en la versión 2.2.12 y posterior.

+

En contexto per-directorio, la URI contra la que cada RewriteRule +compara es la concatenación de los valores actuales de la URI +y PATH_INFO.

+ +

La URI actual puede ser la URI inicial solicitada por el cliente, el +resultado de una ronda anterior de procesamiento de mod_rewrite, o el resultado de +una regla previa en la ronda actual de procesamiento de mod_rewrite.

+ +

En contraste, el PATH_INFO que se añade a la URI antes de cada +regla refleja solo el valor de PATH_INFO antes de esta ronda de +procesamiento de mod_rewrite. Como consecuencia, si porciones grandes +de la URI se hacen coincidir y copian en una sustitución en múltiples +directivas RewriteRule, sin considerar +qué partes de la URI provienen del PATH_INFO actual, la URI +final puede tener múltiples copias de PATH_INFO añadidas.

+ +

Use esta bandera en cualquier sustitución donde el PATH_INFO que resultó +del mapeo anterior de esta solicitud al sistema de archivos no es de +interés. Esta bandera olvida permanentemente el PATH_INFO establecido +antes de que comenzara esta ronda de procesamiento de mod_rewrite. PATH_INFO no +se recalculará hasta que se complete la ronda actual de procesamiento de mod_rewrite. +Las reglas subsiguientes durante esta ronda de procesamiento verán +solo el resultado directo de las sustituciones, sin ningún PATH_INFO +añadido.

+
top
+
+

E|env

+

Con la bandera [E], o [env], puede establecer el valor de una variable +de entorno. Tenga en cuenta que algunas variables de entorno pueden establecerse después de que la regla +se ejecute, deshaciendo así lo que ha establecido. Vea el +documento de Variables de Entorno para más detalles sobre cómo funcionan las variables +de entorno.

+ +

La sintaxis completa para esta bandera es:

+ +
[E=VAR:VAL]
+[E=!VAR]
+ + +

VAL puede contener referencias inversas ($N o +%N) que se expanden.

+ +

Usando la forma corta

+ +

+[E=VAR] +

+ +

puede establecer la variable de entorno llamada VAR a un +valor vacío.

+ +

La forma

+ +

+[E=!VAR] +

+ +

permite eliminar una variable de entorno previamente establecida +llamada VAR.

+ +

Las variables de entorno pueden usarse en una variedad de +contextos, incluyendo programas CGI, otras directivas RewriteRule, o +directivas CustomLog.

+ +

El siguiente ejemplo establece una variable de entorno llamada 'image' con un +valor de '1' si la URI solicitada es un archivo de imagen. Entonces, esa +variable de entorno se usa para excluir esas solicitudes del registro de +acceso.

+ +
RewriteRule "\.(png|gif|jpg)$"   "-" [E=image:1]
+CustomLog   "logs/access_log"    combined env=!image
+ + +

Tenga en cuenta que este mismo efecto se puede obtener usando SetEnvIf. Esta técnica se ofrece como +un ejemplo, no como una recomendación.

+
top
+
+

END

+

Usar la bandera [END] termina no solo la ronda actual de procesamiento de +reescritura (como [L]) sino también previene que cualquier procesamiento de +reescritura posterior ocurra en contexto per-directorio (htaccess).

+ +

Esto no se aplica a nuevas solicitudes resultantes de +redirecciones externas.

+
top
+
+

F|forbidden

+

Usar la bandera [F] causa que el servidor devuelva un código de estado 403 Forbidden +al cliente. Aunque el mismo comportamiento puede lograrse usando +la directiva Deny, esto +permite más flexibilidad en la asignación de un estado Forbidden.

+ +

La siguiente regla prohibirá que archivos .exe sean +descargados de su servidor.

+ +
RewriteRule "\.exe"   "-" [F]
+ + +

Este ejemplo usa la sintaxis "-" para el destino de reescritura, que significa +que la URI solicitada no se modifica. No hay razón para reescribir a +otra URI, si va a prohibir la solicitud.

+ +

Cuando se usa [F], se implica un [L] - es decir, la respuesta se devuelve +inmediatamente, y no se evalúan más reglas.

+ +
top
+
+

G|gone

+

La bandera [G] fuerza al servidor a devolver un estado 410 Gone con la +respuesta. Esto indica que un recurso solía estar disponible, pero ya no +lo está.

+ +

Como con la bandera [F], normalmente usará la sintaxis "-" para el +destino de reescritura cuando use la bandera [G]:

+ +
RewriteRule "oldproduct"   "-" [G,NC]
+ + +

Cuando se usa [G], se implica un [L] - es decir, la respuesta se devuelve +inmediatamente, y no se evalúan más reglas.

+ +
top
+
+

H|handler

+

Fuerza que la solicitud resultante sea manejada con el manejador +especificado. Por ejemplo, uno podría usar esto para forzar que todos los archivos sin +extensión de archivo sean procesados por el manejador de php:

+ +
RewriteRule "!\."  "-" [H=application/x-httpd-php]
+ + +

+La expresión regular anterior - !\. - coincidirá con cualquier solicitud +que no contenga el carácter literal .. +

+ +

Esto también puede usarse para forzar el manejador basado en algunas condiciones. +Por ejemplo, el siguiente fragmento usado en contexto per-servidor permite que +archivos .php sean mostrados por mod_php +si se solicitan con la extensión .phps:

+ +
RewriteRule "^(/source/.+\.php)s$" "$1" [H=application/x-httpd-php-source]
+ + +

La expresión regular anterior - ^(/source/.+\.php)s$ - coincidirá +con cualquier solicitud que comience con /source/ seguido de 1 o +más caracteres seguidos de .phps literalmente. La referencia inversa +$1 se refiere a la coincidencia capturada dentro de los paréntesis de la expresión +regular.

+
top
+
+

L|last

+

La bandera [L] causa que mod_rewrite deje de procesar +el conjunto de reglas. En la mayoría de los contextos, esto significa que si la regla coincide, no +se procesarán más reglas. Esto corresponde al +comando last en Perl, o al comando break en +C. Use esta bandera para indicar que la regla actual debe aplicarse +inmediatamente sin considerar más reglas.

+ +

Si está usando RewriteRule en archivos +.htaccess o en +secciones <Directory>, +es importante entender cómo se procesan las reglas. La forma simplificada de esto es que una vez que las reglas han sido +procesadas, la solicitud reescrita se devuelve al motor de análisis +de URL para que haga lo que pueda con ella. Es posible que mientras se maneja la solicitud reescrita, el archivo .htaccess o +la sección <Directory> +pueda encontrarse de nuevo, y así el conjunto de reglas pueda ejecutarse de nuevo desde el +inicio. Lo más común es que esto suceda si una de las reglas causa una +redirección - ya sea interna o externa - causando que el proceso de solicitud +comience de nuevo.

+ +

Es por lo tanto importante, si está usando directivas RewriteRule en uno de estos +contextos, que tome pasos explícitos para evitar bucles en las reglas, y no +contar únicamente con la bandera [L] para terminar la ejecución de una serie de +reglas, como se muestra a continuación.

+ +

Una bandera alternativa, [END], puede usarse para terminar no solo la +ronda actual de procesamiento de reescritura sino prevenir cualquier +procesamiento de reescritura posterior en contexto per-directorio +(htaccess). Esto no se aplica a nuevas solicitudes resultantes de +redirecciones externas.

+ +

El ejemplo dado aquí reescribirá cualquier solicitud a +index.php, dando la solicitud original como un argumento de cadena +de consulta a index.php, sin embargo, la RewriteCond asegura que si la solicitud +ya es para index.php, la RewriteRule se omitirá.

+ +
RewriteBase "/"
+RewriteCond "%{REQUEST_URI}" !=/index.php
+RewriteRule "^(.*)"          "/index.php?req=$1" [L,PT]
+ +
top
+
+

N|next

+

+La bandera [N] causa que el conjunto de reglas comience de nuevo desde el principio, usando +el resultado del conjunto de reglas hasta el momento como punto de partida. Use +con extrema precaución, ya que puede resultar en un bucle. +

+

+La bandera [Next] podría usarse, por ejemplo, si deseara reemplazar una +cierta cadena o letra repetidamente en una solicitud. El ejemplo mostrado aquí +reemplazará A con B en todas partes de una solicitud, y continuará haciéndolo +hasta que no haya más As por reemplazar. +

+
RewriteRule "(.*)A(.*)" "$1B$2" [N]
+ +

Puede pensar en esto como un bucle while: Mientras este +patrón siga coincidiendo (es decir, mientras la URI aún contenga una +A), realice esta sustitución (es decir, reemplace la +A con una B).

+ +

En 2.5.0 y posterior, este módulo devuelve un error después de 10,000 iteraciones para +proteger contra bucles no intencionados. Se puede especificar un número máximo alternativo de +iteraciones añadiéndolo a la bandera N.

+
# Estar dispuesto a reemplazar 1 carácter en cada pasada del bucle
+RewriteRule "(.+)[><;]$" "$1" [N=32000]
+# ... o, rendirse después de 10 bucles
+RewriteRule "(.+)[><;]$" "$1" [N=10]
+ + +
top
+
+

NC|nocase

+

El uso de la bandera [NC] causa que la RewriteRule se evalúe de manera +insensible a mayúsculas/minúsculas. Es decir, no importa si las letras aparecen +en mayúsculas o minúsculas en la URI coincidente.

+ +

En el ejemplo siguiente, cualquier solicitud de un archivo de imagen será proxied +a su servidor de imágenes dedicado. La coincidencia es insensible a mayúsculas/minúsculas, de modo que +archivos .jpg y .JPG son ambos aceptables, por +ejemplo.

+ +
RewriteRule "(.*\.(jpg|gif|png))$" "http://images.example.com$1" [P,NC]
+ +
top
+
+

NE|noescape

+

Por defecto, cuando una RewriteRule +resulta en una redirección externa, cualquier carácter en la salida que no esté +en el siguiente conjunto seguro será convertido a sus equivalentes en hexadecimal +(codificación porcentual):

+ +
    +
  • Caracteres alfanuméricos: A-Z, a-z, + 0-9
  • +
  • Caracteres especiales: $-_.+!*'(),:;@&=/~
  • +
+ +

Por ejemplo, # se convertiría a %23, +y ? a %3F. El carácter % +también se escapa (a %25), lo que significa que cualquier +codificación porcentual ya presente en la sustitución será +doblemente codificada.

+ +

Usar la bandera [NE] previene este escape, permitiendo que caracteres +como # y ? pasen a la +URL de redirección sin modificar.

+ +
RewriteRule "^/anchor/(.+)" "/bigpage.html#$1" [NE,R]
+ + +

+El ejemplo anterior redirigirá /anchor/xyz a +/bigpage.html#xyz. Omitir la [NE] resultará en que el # +sea convertido a su equivalente hexadecimal, %23, lo que +entonces resultará en una condición de error 404 No Encontrado. +

+ +
top
+
+

NS|nosubreq

+

El uso de la bandera [NS] previene que la regla se use en +sub-solicitudes. Por ejemplo, una página incluida usando un SSI (Server +Side Include) es una sub-solicitud, y usted puede querer evitar que las reescrituras +ocurran en esas sub-solicitudes. También, cuando mod_dir +intenta encontrar información sobre posibles archivos predeterminados de directorio +(como archivos index.html), esto es una +sub-solicitud interna, y a menudo querrá evitar reescrituras en tales sub-solicitudes. +En sub-solicitudes, no siempre es útil, e incluso puede causar errores, si +el conjunto completo de reglas se aplica. Use esta bandera para excluir +reglas problemáticas.

+ +

Para decidir si usar o no esta regla: si prefija URLs con +scripts CGI, para forzar que sean procesadas por el script CGI, es +probable que tenga problemas (o una sobrecarga significativa) +en sub-solicitudes. En estos casos, use esta bandera.

+ +

+Imágenes, archivos javascript, o archivos css, cargados como parte de una página HTML, +no son sub-solicitudes - el navegador los solicita como solicitudes HTTP +separadas. +

+
top
+
+

P|proxy

+

El uso de la bandera [P] causa que la solicitud sea manejada por +mod_proxy, y procesada a través de una solicitud proxy. Por +ejemplo, si quisiera que todas las solicitudes de imágenes fueran manejadas por un servidor +de imágenes backend, podría hacer algo como lo siguiente:

+ +
RewriteRule "/(.*)\.(jpg|gif|png)$" "http://images.example.com/$1.$2" [P]
+ + +

El uso de la bandera [P] implica [L] - es decir, la solicitud se envía inmediatamente +a través del proxy, y cualquier regla siguiente no será +considerada.

+ +

+Debe asegurarse de que la cadena de sustitución sea una URI válida +(típicamente comenzando con http://hostname) que pueda ser +manejada por mod_proxy. Si no, obtendrá un +error del módulo proxy. Use esta bandera para lograr una +implementación más potente de la directiva ProxyPass, +para mapear contenido remoto al espacio de nombres del servidor local.

+ +
+

Advertencia de Seguridad

+

Tenga cuidado al construir la URL destino de la regla, considerando +el impacto de seguridad de permitir que el cliente influya en el conjunto de +URLs a las que su servidor actuará como proxy. Asegúrese de que la parte del esquema +y nombre de host de la URL sea fija, o no permita al +cliente una influencia indebida.

+
+ +
+

Advertencia de Rendimiento

+

Usar esta bandera provoca el uso de mod_proxy, sin +manejo de conexiones persistentes ya que se usa el worker predeterminado en este caso, +el cual no maneja agrupación/reutilización de conexiones.

+

Para usar conexiones persistentes necesita configurar un +bloque Proxy al menos para la parte del esquema +y host de la URL destino conteniendo una +directiva ProxySet donde por ejemplo establezca +un timeout.

+

Si lo configura con ProxyPass o +ProxyPassMatch se usarán conexiones +persistentes automáticamente.

+
+ +

Nota: mod_proxy debe estar habilitado para +usar esta bandera.

+ +
top
+
+

PT|passthrough

+ +

+El destino (o cadena de sustitución) en una RewriteRule se asume que es una +ruta de archivo, por defecto. El uso de la bandera [PT] causa que sea tratada +como una URI en su lugar. Es decir, el +uso de la bandera [PT] causa que el resultado de la RewriteRule se pase de vuelta a través del +mapeo de URL, de modo que mapeos basados en ubicación, como Alias, Redirect, o ScriptAlias, por ejemplo, puedan tener la +oportunidad de tomar efecto. +

+ +

+Si, por ejemplo, tiene un +Alias +para /icons, y tiene una RewriteRule apuntando allí, debería +usar la bandera [PT] para asegurar que el +Alias sea evaluado. +

+ +
Alias "/icons" "/usr/local/apache/icons"
+RewriteRule "/pics/(.+)\.jpg$" "/icons/$1.gif" [PT]
+ + +

+La omisión de la bandera [PT] en este caso causará que el Alias sea +ignorado, resultando en un error 'Archivo no encontrado'. +

+ +

La bandera PT implica la bandera L: +la reescritura se detendrá para pasar la solicitud a +la siguiente fase de procesamiento.

+ +

Tenga en cuenta que la bandera PT está implícita en contextos per-directorio +como secciones +<Directory> +o en archivos .htaccess. La única forma de evitar eso +es reescribir a -.

+ +
top
+
+

QSA|qsappend

+

+Cuando la URI de reemplazo contiene una cadena de consulta, el comportamiento predeterminado +de RewriteRule es descartar +la cadena de consulta existente, y reemplazarla con la recién generada. +Usar la bandera [QSA] causa que las cadenas de consulta se combinen. +

+ +

Considere la siguiente regla:

+ +
RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]
+ + +

Con la bandera [QSA], una solicitud para /pages/123?one=two será +mapeada a /page.php?page=123&one=two. Sin la bandera [QSA], +esa misma solicitud será mapeada a +/page.php?page=123 - es decir, la cadena de consulta existente +será descartada. +

+
top
+
+

QSD|qsdiscard

+

+Cuando la URI solicitada contiene una cadena de consulta, y la URI destino no +la contiene, el comportamiento predeterminado de RewriteRule es copiar esa cadena de consulta +a la URI destino. Usar la bandera [QSD] causa que la cadena de consulta +sea descartada. +

+ +

Esta bandera está disponible en la versión 2.4.0 y posterior.

+ +

+Usar [QSD] y [QSA] juntos resultará en que [QSD] tenga precedencia. +

+ +

+Si la URI destino tiene una cadena de consulta, se observará el comportamiento predeterminado +- es decir, la cadena de consulta original será descartada y +reemplazada con la cadena de consulta en la URI destino de la RewriteRule. +

+ +
top
+
+

QSL|qslast

+

+Por defecto, el primer signo de interrogación (el más a la izquierda) en la sustitución +delimita la ruta de la cadena de consulta. Usar la bandera [QSL] indica a +RewriteRule que en su lugar divida +los dos componentes usando el último signo de interrogación (el más a la derecha).

+ +

+Esto es útil cuando se mapea a archivos que tienen signos de interrogación literales en +sus nombres de archivo. Si no se usa cadena de consulta en la sustitución, +se puede añadir un signo de interrogación en combinación con esta bandera.

+ +

Esta bandera está disponible en la versión 2.4.19 y posterior.

+ +
top
+
+

R|redirect

+

+El uso de la bandera [R] causa que se emita una redirección HTTP al navegador. +Si se especifica una URL completamente cualificada (es decir, incluyendo +http://servername/) entonces se emitirá una redirección a esa +ubicación. De lo contrario, se usará el protocolo actual, nombre del servidor, y número de puerto +para generar la URL enviada con la redirección. +

+ +

+Se puede especificar cualquier código de estado de respuesta HTTP válido, +usando la sintaxis [R=305], con un código de estado 302 siendo usado por +defecto si no se especifica ninguno. El código de estado especificado no necesita +necesariamente ser un código de estado de redirección (3xx). Sin embargo, +si un código de estado está fuera del rango de redirección (300-399) entonces la +cadena de sustitución se descarta por completo, y la reescritura se detiene como si +se usara L.

+ +

Además de los códigos de estado de respuesta, también puede especificar estados de +redirección usando sus nombres simbólicos: temp (predeterminado), +permanent, o seeother.

+ +

+Casi siempre querrá usar [R] junto con [L] (es decir, +usar [R,L]) porque por sí sola, la bandera [R] antepone +http://thishost[:thisport] a la URI, pero luego pasa esto +a la siguiente regla en el conjunto de reglas, lo que a menudo puede resultar en advertencias de 'URI +inválida en solicitud'. +

+ +

Nota: httpd solo soporta códigos de estado que están incluidos en la especificación +HTTP. Usar un código de estado no reconocido resultará en un error 500 y +un mensaje en el log de errores.

+ +
top
+
+

S|skip

+

La bandera [S] se usa para omitir reglas que no desea ejecutar. La +sintaxis de la bandera skip es [S=N], donde N indica +el número de reglas a omitir (siempre que la +RewriteRule y cualquier directiva +RewriteCond precedente coincidan). Esto puede pensarse como una +sentencia goto en su conjunto de reglas de reescritura. En el siguiente +ejemplo, solo queremos ejecutar la +RewriteRule si la URI solicitada no corresponde a un +archivo real.

+ +
# Is the request for a non-existent file?
+RewriteCond "%{REQUEST_FILENAME}" !-f
+RewriteCond "%{REQUEST_FILENAME}" !-d
+# If so, skip these two RewriteRules
+RewriteRule ".?"                  "-" [S=2]
+
+RewriteRule "(.*\.gif)"           "images.php?$1"
+RewriteRule "(.*\.html)"          "docs.php?$1"
+ + +

Esta técnica es útil porque una RewriteCond solo se aplica a la +RewriteRule inmediatamente +siguiente. Así, si desea hacer que una RewriteCond se aplique +a varias RewriteRules, una técnica posible es negar +esas condiciones y añadir una RewriteRule con una bandera [Skip]. Puede +usar esto para hacer construcciones pseudo if-then-else: La última regla de +la cláusula then se convierte en skip=N, donde N es el +número de reglas en la cláusula else:

+
# Does the file exist?
+RewriteCond "%{REQUEST_FILENAME}" !-f
+RewriteCond "%{REQUEST_FILENAME}" !-d
+# Create an if-then-else construct by skipping 3 lines if we meant to go to the "else" stanza.
+RewriteRule ".?"                  "-" [S=3]
+
+# IF the file exists, then:
+    RewriteRule "(.*\.gif)"  "images.php?$1"
+    RewriteRule "(.*\.html)" "docs.php?$1"
+    # Skip past the "else" stanza.
+    RewriteRule ".?"         "-" [S=1]
+# ELSE...
+    RewriteRule "(.*)"       "404.php?file=$1"
+# END
+ + +

Probablemente sea más fácil lograr este tipo de configuración usando +las directivas <If>, <ElseIf>, y <Else> en su lugar.

+ +
top
+
+

T|type

+

Establece el tipo MIME con el que se enviará la respuesta +resultante. Esto tiene el mismo efecto que la directiva AddType.

+ +

Por ejemplo, podría usar la siguiente técnica para servir código fuente Perl +como texto plano, si se solicita de una manera particular:

+ +
# Servir archivos .pl como texto plano
+RewriteRule "\.pl$"  "-" [T=text/plain]
+ + +

O, quizás, si tiene una cámara que produce imágenes jpeg sin +extensiones de archivo, podría forzar que esas imágenes sean servidas con el +tipo MIME correcto por virtud de sus nombres de archivo:

+ +
# Los archivos con 'IMG' en el nombre son imágenes jpg.
+RewriteRule "IMG"  "-" [T=image/jpg]
+ + +

Por favor tenga en cuenta que este es un ejemplo trivial, y podría hacerse mejor +usando <FilesMatch> +en su lugar. Siempre considere las soluciones +alternativas a un problema antes de recurrir a rewrite, que invariablemente +será una solución menos eficiente que las alternativas.

+ +

+Si se usa en contexto per-directorio, use solo - (guión) +como la sustitución para toda la ronda de procesamiento de mod_rewrite, +de lo contrario el tipo MIME establecido con esta bandera se pierde debido a un +re-procesamiento interno (incluyendo rondas posteriores de procesamiento de mod_rewrite). +La bandera L puede ser útil en este contexto para terminar la +ronda actual de procesamiento de mod_rewrite.

+
top
+
+

UnsafeAllow3F

+

Establecer esta bandera es necesario para permitir que una reescritura continúe si la + solicitud HTTP que se está reescribiendo tiene un signo de interrogación codificado, '%3f', y el + resultado reescrito tiene un '?' en la sustitución. Esto protege contra una URL + maliciosa que aproveche una captura y re-sustitución del signo de interrogación + codificado.

+
top
+
+

UnsafePrefixStat

+

Establecer esta bandera es necesario en sustituciones de ámbito de servidor + que comienzan con una variable o referencia inversa y se resuelven a una ruta del sistema de archivos. + Estas sustituciones no se prefijan con la raíz del documento. + Esto protege contra una URL maliciosa que cause que la sustitución expandida se + mapee a una ubicación inesperada del sistema de archivos.

+ +

Available in Apache HTTP Server 2.5.1 and later.

+
top
+
+

UNC

+

Establecer esta bandera previene la fusión de múltiples barras iniciales, + como se usa en las rutas UNC de Windows. La bandera no es necesaria cuando la + sustitución de las reglas comienza con múltiples barras literales.

+ +

Available in Apache HTTP Server 2.5.1 and later.

+
+
+

Idiomas disponibles:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/flags.html.fr.utf8 b/docs/manual/rewrite/flags.html.fr.utf8 index 55cc23870a..b83780640c 100644 --- a/docs/manual/rewrite/flags.html.fr.utf8 +++ b/docs/manual/rewrite/flags.html.fr.utf8 @@ -23,8 +23,14 @@

Les drapeaux de réécriture

-

Langues Disponibles:  en  | - fr 

+

Langues Disponibles:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

Ce document décrit les drapeaux disponibles dans la directive @@ -934,8 +940,14 @@ utiliser le drapeau L pour terminer la séquence

Disponible à partir de la version 2.5.1 du serveur HTTP Apache.

-

Langues Disponibles:  en  | - fr 

+

Langues Disponibles:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+ + + +
<-
+

RewriteRule フラグ

+
+

翻訳済み言語:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ +

このドキュメントでは、RewriteRule +ディレクティブで使用可能なフラグについて、詳細な説明と例を提供します。

+
+ +
top
+
+

はじめに

+

RewriteRule は、 +1 つ以上のフラグによって動作を変更できます。フラグはルールの末尾の +角括弧内に含まれ、複数のフラグはカンマで区切られます。

+
RewriteRule pattern target [Flag1,Flag2,Flag3]
+ + +

各フラグ (いくつかの例外を除き) には CO のような短い形式と、 +cookie のような長い形式があります。短い形式を使用するのが +最も一般的ですが、各フラグの機能を覚えるために長い形式に慣れることを +お勧めします。一部のフラグは 1 つ以上の引数を取ります。フラグは +大文字小文字を区別しません。

+ +

メタデータを変更するフラグ (T=、H=、E=) は、ディレクトリ単位および +htaccess コンテキストで、同じ書き換え処理ラウンド中に ('-' 以外の) +置換が行われる場合、効果がありません。

+ +

ここでは、各フラグと使用例を紹介します。

+
top
+
+

B (バックリファレンスのエスケープ)

+

[B] フラグは、変換を適用する前に非英数字文字をエスケープするよう +RewriteRule に指示します。

+ +

mod_rewrite はマッピング前に URL をアンエスケープする +必要があるため、バックリファレンスは適用時にアンエスケープされています。 +B フラグを使用すると、バックリファレンス内の非英数字文字がエスケープ +されます。例えば、以下のルールを考えてみてください:

+ +

サーバ変数の同様のエスケープについては、"escape" + マッピング関数を参照してください

+ +
RewriteRule "^search/(.*)$" "/search.php?term=$1"
+ + +

検索語が 'x & y/z' の場合、ブラウザはこれを +'x%20%26%20y%2Fz' としてエンコードし、リクエストは 'search/x%20%26%20y%2Fz' +になります。B フラグがない場合、この書き換えルールは 'search.php?term=x & y/z' +にマッピングされますが、これは有効な URL ではないため、 +search.php?term=x%20&y%2Fz= としてエンコードされ、 +意図した結果になりません。

+ +

同じルールに B フラグを設定すると、パラメータは出力 URL に渡される前に +再エンコードされ、正しいマッピング +/search.php?term=x%20%26%20y%2Fz になります。

+ +
RewriteRule "^search/(.*)$" "/search.php?term=$1" [B,PT]
+ + +

この特定の例を動作させるには、AllowEncodedSlashes を On に +設定する必要がある場合があることに注意してください。httpd は URL 内の +エンコードされたスラッシュを許可せず、見つけた場合は 404 を返します。

+ +

このエスケープは特にプロキシの状況で必要です。バックエンドが +アンエスケープされた URL を受け取ると壊れる可能性があるためです。

+ +

このフラグの代替として、RewriteCond を使用して %{THE_REQUEST} に対してキャプチャする +方法があります。これはエンコードされた形式の文字列をキャプチャします。

+ +

2.4.26 以降では、エスケープする文字を特定の文字に限定できます: +[B=#?;]。注: スペース文字はエスケープする文字リストに +含めることができますが、RewriteRule +の 3 番目の引数全体を引用符で囲む必要があり、スペースはリストの +最後の文字にしてはいけません。

+ +
# スペースと疑問符をエスケープ。最後の引数の引用符は
+# スペースが含まれる場合に必要です。
+RewriteRule "^search/(.*)$" "/search.php?term=$1" "[B= ?]"
+ + +

この方法でエスケープされる文字を制限するには、#flag_bne + および #flag_bctls を参照してください

+
top
+
+

BNP|backrefnoplus (スペースを + にエスケープしない)

+

[BNP] フラグは、バックリファレンス内のスペース文字を '+' ではなく +%20 にエスケープするよう RewriteRule に指示します。 +バックリファレンスがクエリ文字列ではなくパスコンポーネントで使用される +場合に便利です。

+ +
# クエリ文字列経由のフォーム送信で使用される + ではなく、
+# パス内のスペースを %20 にエスケープ
+RewriteRule "^search/(.*)$" "/search.php/$1" "[B,BNP]"
+ + +

このフラグはバージョン 2.4.26 以降で使用可能です。

+
top
+
+

BCTLS

+

[BCTLS] フラグは [B] フラグに似ていますが、制御文字とスペース文字のみを +エスケープします。これは、エンコードされずにクエリ文字列にコピーされた +場合に拒否される文字セットと同じです。

+ +
# 制御文字とスペースをエスケープ
+RewriteRule "^search/(.*)$" "/search.php/$1" "[BCTLS]"
+ + +

このフラグはバージョン 2.5.1 以降で使用可能です。

+ +
top
+
+

BNE

+

[BNE=...] 内の文字リストは、[B] または [BCTLS] フラグの文字に対する +除外として扱われます。リストされた文字はエスケープされません。

+ +
# デフォルトの文字をエスケープするが、/ は除外
+RewriteRule "^search/(.*)$" "/search.php?term=$1" "[B,BNE=/]"
+ + +

このフラグはバージョン 2.5.1 以降で使用可能です。

+
top
+
+

C|chain

+

[C] または [chain] フラグは、RewriteRule が次のルールに +チェーンされることを示します。つまり、ルールがマッチすると通常通り +処理され、制御は次のルールに移ります。しかし、マッチしない場合は、 +次のルールおよびチェーンされたその他のルールがスキップされます。

+ +
top
+
+

CO|cookie

+

[CO] または [cookie] フラグは、特定の +RewriteRule がマッチした場合に +cookie を設定できるようにします。引数は 3 つの必須フィールドと +5 つのオプションフィールドで構成されます。

+ +

フラグの完全な構文 (すべての属性を含む) は以下の通りです:

+ +

+[CO=NAME:VALUE:DOMAIN:lifetime:path:secure:httponly:samesite] +

+ +

cookie フィールドのいずれかにリテラルの ':' 文字が必要な場合、 +代替構文が利用可能です。代替構文にオプトインするには、cookie の +"Name" の前に ';' 文字を付け、フィールドセパレータを ';' として +指定してください。

+ +

+[CO=;NAME;VALUE:MOREVALUE;DOMAIN;lifetime;path;secure;httponly;samesite] +

+ +

cookie が設定されるためには、名前、値、およびドメインを宣言する +必要があります。

+ +
+
Domain
+
cookie が有効なドメインです。www.example.com のような +ホスト名か、.example.com のようなドメインです。 +ドットで区切られた少なくとも 2 つのパートが必要です。つまり、 +単に .com や .net にはできません。 +そのような cookie は cookie セキュリティモデルで禁止されています。
+
+ +

オプションで以下の値も設定できます:

+ +
+
Lifetime
+
cookie が保持される時間 (分単位)。
+
値が 0 の場合、cookie は現在のブラウザセッションの間のみ保持されます。 +指定されない場合のデフォルト値です。
+
負の値を指定すると、ブラウザで cookie が削除されます。
+ +
Path
+
cookie が有効な現在のウェブサイトのパスです。 +/customers/ や /files/download/ などです。
+
デフォルトでは / (ウェブサイト全体) に設定されます。
+ +
Secure
+
secure、true、または 1 に +設定すると、cookie はセキュアな (https) 接続経由でのみ送信が許可されます。
+ +
httponly
+
HttpOnly、true、または 1 に +設定すると、cookie に HttpOnly フラグが設定され、 +この機能をサポートするブラウザでは JavaScript コードから cookie に +アクセスできなくなります。
+ +
samesite
+
false または 0 以外の値に設定すると、 +SameSite 属性が指定された値に設定されます。典型的な値は +None、Lax、Strict です。 +2.5.1 以降で使用可能です。
+
+ + +

以下の例を考えてみましょう:

+ +
RewriteEngine On
+RewriteRule   "^/index\.html"   "-" [CO=frontdoor:yes:.example.com:1440:/]
+ + +

この例では、ルールはリクエストを書き換えません。 +書き換えターゲットの "-" は mod_rewrite にリクエストを +変更せずに通過させることを意味します。代わりに、'frontdoor' という名前で +値 'yes' の cookie を設定します。cookie は .example.com +ドメイン内のすべてのホストに対して有効です。有効期限は 1440 分 +(24 時間) で、すべての URI に対して返されます。

+ +
top
+
+

DPI|discardpath

+

DPI フラグは、書き換えた URI の PATH_INFO 部分を破棄します。

+

このフラグはバージョン 2.2.12 以降で使用可能です。

+

ディレクトリ単位のコンテキストでは、各 +RewriteRule が比較する URI は、URI と PATH_INFO の +現在の値を連結したものです。

+ +

現在の URI は、クライアントが要求した初期 URI、 +mod_rewrite の前のラウンドの処理結果、または現在のラウンドの +mod_rewrite 処理の前のルールの結果である可能性があります。

+ +

一方、各ルールの前に URI に追加される PATH_INFO は、この +mod_rewrite 処理ラウンド前の PATH_INFO の値のみを +反映します。その結果、URI の大部分が複数の +RewriteRule ディレクティブで置換にマッチおよび +コピーされ、URI のどの部分が現在の PATH_INFO から来たかを考慮しない場合、 +最終的な URI に PATH_INFO の複数のコピーが追加される可能性があります。

+ +

前のマッピングの結果としてのこのリクエストの PATH_INFO が不要な +置換にはこのフラグを使用してください。このフラグは、この +mod_rewrite 処理ラウンドの開始前に確立された PATH_INFO を +永続的に破棄します。PATH_INFO は、現在の mod_rewrite +処理ラウンドが完了するまで再計算されません。このラウンド中の +後続のルールは、PATH_INFO が追加されていない置換の直接の結果のみを +参照します。

+
top
+
+

E|env

+

[E] または [env] フラグを使用すると、環境変数の値を設定できます。 +一部の環境変数はルールの実行後に設定される可能性があり、設定した値が +上書きされることがあることに注意してください。環境変数の動作の詳細は +環境変数ドキュメントを参照してください。

+ +

このフラグの完全な構文は以下の通りです:

+ +
[E=VAR:VAL]
+[E=!VAR]
+ + +

VAL には展開されるバックリファレンス ($N や +%N) を含めることができます。

+ +

短い形式

+ +

+[E=VAR] +

+ +

を使用すると、VAR という名前の環境変数を空の値に +設定できます。

+ +

以下の形式

+ +

+[E=!VAR] +

+ +

で、以前に設定された VAR という名前の環境変数を +削除できます。

+ +

環境変数は CGI プログラム、他の RewriteRule ディレクティブ、 +CustomLog ディレクティブなど、さまざまなコンテキストで使用できます。

+ +

以下の例は、リクエストされた URI が画像ファイルの場合、'image' という +環境変数を値 '1' に設定します。その後、その環境変数を使用して、 +それらのリクエストをアクセスログから除外します。

+ +
RewriteRule "\.(png|gif|jpg)$"   "-" [E=image:1]
+CustomLog   "logs/access_log"    combined env=!image
+ + +

この効果は SetEnvIf を +使用しても得られることに注意してください。このテクニックは推奨としてではなく、 +例として提供されています。

+
top
+
+

END

+

[END] フラグを使用すると、([L] のように) 現在の書き換え処理ラウンドを +終了するだけでなく、ディレクトリ単位 (htaccess) コンテキストでの +以降の書き換え処理も防止します。

+ +

これは外部リダイレクトによる新しいリクエストには適用されません。

+
top
+
+

F|forbidden

+

[F] フラグを使用すると、サーバはクライアントに 403 Forbidden +ステータスコードを返します。同じ動作は +Deny ディレクティブでも +実現できますが、このフラグの方が Forbidden ステータスの割り当てに +柔軟性があります。

+ +

以下のルールは、サーバから .exe ファイルのダウンロードを +禁止します。

+ +
RewriteRule "\.exe"   "-" [F]
+ + +

この例は書き換えターゲットに "-" 構文を使用しており、リクエスト URI は +変更されません。リクエストを禁止するのであれば、別の URI に書き換える +理由はありません。

+ +

[F] を使用すると [L] が暗黙的に含まれます - つまり、レスポンスが +直ちに返され、後続のルールは評価されません。

+ +
top
+
+

G|gone

+

[G] フラグは、サーバにレスポンスとして 410 Gone ステータスを +返すよう強制します。これは、リソースがかつて利用可能であったが、 +もはや利用できないことを示します。

+ +

[F] フラグと同様に、[G] フラグを使用する場合は通常書き換えターゲットに +"-" 構文を使用します:

+ +
RewriteRule "oldproduct"   "-" [G,NC]
+ + +

[G] を使用すると [L] が暗黙的に含まれます - つまり、レスポンスが +直ちに返され、後続のルールは評価されません。

+ +
top
+
+

H|handler

+

結果のリクエストを指定されたハンドラで処理するよう強制します。 +例えば、ファイル拡張子のないすべてのファイルを php ハンドラで +解析させるために使用できます:

+ +
RewriteRule "!\."  "-" [H=application/x-httpd-php]
+ + +

+上記の正規表現 - !\. - は、リテラルの . +文字を含まないすべてのリクエストにマッチします。 +

+ +

これは条件に基づいてハンドラを強制するためにも使用できます。 +例えば、以下のスニペットをサーバ単位のコンテキストで使用すると、 +.php ファイルが .phps 拡張子でリクエスト +された場合に mod_php によって表示されます:

+ +
RewriteRule "^(/source/.+\.php)s$" "$1" [H=application/x-httpd-php-source]
+ + +

上記の正規表現 - ^(/source/.+\.php)s$ - は +/source/ で始まり、1 文字以上の任意の文字が続き、 +リテラルの .phps で終わるリクエストにマッチします。 +バックリファレンス $1 は正規表現の括弧内のキャプチャされたマッチを +参照します。

+
top
+
+

L|last

+

[L] フラグは mod_rewrite にルールセットの処理を +停止させます。ほとんどのコンテキストで、ルールがマッチした場合、 +以降のルールは処理されなくなります。これは Perl の last +コマンドや C の break コマンドに相当します。 +このフラグは、後続のルールを考慮せずに現在のルールを直ちに適用 +すべきことを示すために使用します。

+ +

.htaccess ファイルまたは +<Directory> +セクションで RewriteRule +を使用している場合、ルールがどのように処理されるかについてある程度の +理解が重要です。簡略化すると、ルールが処理された後、書き換えられた +リクエストは URL 解析エンジンに渡されます。書き換えられたリクエストが +処理される際に、.htaccess ファイルまたは +<Directory> セクションが +再び検出され、ルールセットが最初から再実行される可能性があります。 +これは最も一般的に、ルールの 1 つが (内部または外部の) リダイレクトを +引き起こし、リクエスト処理が最初からやり直される場合に発生します。

+ +

したがって、これらのコンテキストで RewriteRule ディレクティブを使用する場合、 +ルールのループを避けるための明示的な対策を取り、一連のルールの実行 +終了を [L] フラグだけに頼らないことが重要です。以下に示す通りです。

+ +

代替フラグ [END] は、現在の書き換え処理ラウンドを終了するだけでなく、 +ディレクトリ単位 (htaccess) コンテキストでの以降の書き換え処理も +防止するために使用できます。これは外部リダイレクトによる新しい +リクエストには適用されません。

+ +

ここに示す例は、すべてのリクエストを index.php に +書き換え、元のリクエストを index.php へのクエリ文字列 +引数として渡しますが、RewriteCond +により、リクエストが既に index.php に対するものである場合は +RewriteRule がスキップされます。

+ +
RewriteBase "/"
+RewriteCond "%{REQUEST_URI}" !=/index.php
+RewriteRule "^(.*)"          "/index.php?req=$1" [L,PT]
+ +
top
+
+

N|next

+

+[N] フラグは、それまでのルールセットの結果を出発点として、ルールセットを +最初からやり直します。ループを引き起こす可能性があるため、 +極めて慎重に使用してください。 +

+

+[Next] フラグは、例えばリクエスト内の特定の文字列や文字を繰り返し +置換したい場合に使用できます。ここに示す例は、リクエスト内のすべての +A を B に置換し、置換すべき A がなくなるまで続けます。 +

+
RewriteRule "(.*)A(.*)" "$1B$2" [N]
+ +

これは while ループと考えることができます: このパターンが +まだマッチする間 (つまり、URI にまだ A が含まれている間)、 +この置換を実行します (つまり、A を B に +置換します)。

+ +

2.5.0 以降では、意図しないループを防ぐため、10,000 回の反復後に +エラーを返します。N フラグに追加することで、代替の最大反復回数を +指定できます。

+
# ループの各パスで 1 文字を置換
+RewriteRule "(.+)[><;]$" "$1" [N=32000]
+# ... または、10 ループ後に諦める
+RewriteRule "(.+)[><;]$" "$1" [N=10]
+ + +
top
+
+

NC|nocase

+

[NC] フラグを使用すると、RewriteRule は大文字小文字を +区別せずにマッチします。つまり、マッチする URI で文字が大文字か +小文字かを気にしません。

+ +

以下の例では、画像ファイルのリクエストは専用の画像サーバに +プロキシされます。マッチは大文字小文字を区別しないため、例えば +.jpg と .JPG ファイルの両方が受け入れられます。

+ +
RewriteRule "(.*\.(jpg|gif|png))$" "http://images.example.com$1" [P,NC]
+ +
top
+
+

NE|noescape

+

デフォルトでは、RewriteRule +が外部リダイレクトをもたらす場合、出力内の以下の安全なセット以外の文字は +16 進コード (パーセントエンコード) に変換されます:

+ +
    +
  • 英数字: A-Z、a-z、 + 0-9
  • +
  • 特殊文字: $-_.+!*'(),:;@&=/~
  • +
+ +

例えば、# は %23 に、? は +%3F に変換されます。% 文字もエスケープされ +(%25 に)、これにより置換に既に存在するパーセントエンコーディングが +二重エンコードされることを意味します。

+ +

[NE] フラグを使用すると、このエスケープが防止され、# や +? などの文字がそのままリダイレクト URL に渡されます。

+ +
RewriteRule "^/anchor/(.+)" "/bigpage.html#$1" [NE,R]
+ + +

+上記の例は /anchor/xyz を /bigpage.html#xyz に +リダイレクトします。[NE] を省略すると、# が 16 進コード相当の +%23 に変換され、404 Not Found エラーが発生します。 +

+ +
top
+
+

NS|nosubreq

+

[NS] フラグを使用すると、サブリクエストでのルールの使用が +防止されます。例えば、SSI (Server Side Include) を使用して +インクルードされたページはサブリクエストであり、それらのサブリクエストで +書き換えが行われないようにしたい場合があります。また、 +mod_dir がディレクトリのデフォルトファイル +(index.html ファイルなど) の情報を調べようとする場合も +内部サブリクエストであり、そのようなサブリクエストでの書き換えを +避けたい場合が多くあります。サブリクエストでは、ルールの完全なセットが +適用されると有用でない場合やエラーを引き起こす場合があります。 +問題のあるルールを除外するためにこのフラグを使用してください。

+ +

このルールを使用するかどうかを決定するには: CGI スクリプトで +URL をプレフィックスし、CGI スクリプトで処理させるようにしている場合、 +サブリクエストで問題 (または大きなオーバーヘッド) が発生する +可能性があります。そのような場合はこのフラグを使用してください。

+ +

+HTML ページの一部として読み込まれる画像、JavaScript ファイル、 +CSS ファイルはサブリクエストではありません - ブラウザがそれらを +別の HTTP リクエストとしてリクエストします。 +

+
top
+
+

P|proxy

+

[P] フラグを使用すると、リクエストは mod_proxy によって +処理され、プロキシリクエストとして扱われます。例えば、すべての画像 +リクエストをバックエンド画像サーバで処理したい場合、以下のようにします:

+ +
RewriteRule "/(.*)\.(jpg|gif|png)$" "http://images.example.com/$1.$2" [P]
+ + +

[P] フラグの使用は [L] を暗黙的に含みます - つまり、リクエストは +直ちにプロキシに送られ、後続のルールは考慮されません。

+ +

+置換文字列が mod_proxy で処理できる有効な URI +(通常 http://hostname で始まる) であることを +確認する必要があります。そうでない場合、プロキシモジュールからエラーが +発生します。このフラグは、ProxyPass +ディレクティブのより強力な実装を実現し、リモートコンテンツをローカル +サーバのネームスペースにマッピングするために使用します。

+ +
+

セキュリティ警告

+

ルールのターゲット URL を構築する際には、サーバがプロキシとして +動作する URL のセットに対するクライアントの影響のセキュリティ上の +影響を考慮してください。URL のスキームとホスト名の部分が固定されているか、 +クライアントに過度の影響を与えないことを確認してください。

+
+ +
+

パフォーマンス警告

+

このフラグを使用すると、デフォルトワーカーが使用されるため、 +永続的な接続が処理されない mod_proxy の使用がトリガー +されます。接続プーリング/再利用が処理されません。

+

永続的な接続を使用するには、少なくともターゲット URL のスキームと +ホスト部分に対する Proxy +ブロックを設定し、例えばタイムアウトを設定する +ProxySet ディレクティブを +含めてください。

+

ProxyPass または +ProxyPassMatch で設定すると、 +永続的な接続が自動的に使用されます。

+
+ +

注: このフラグを使用するには mod_proxy が +有効になっている必要があります。

+ +
top
+
+

PT|passthrough

+ +

+RewriteRule のターゲット (置換文字列) はデフォルトではファイルパスと +想定されます。[PT] フラグを使用すると、代わりに URI として扱われます。 +つまり、[PT] フラグを使用すると、RewriteRule の結果が URL マッピングに +戻され、Alias、Redirect、ScriptAlias などの場所ベースのマッピングが +効果を発揮する機会が与えられます。 +

+ +

+例えば、/icons に対する Alias があり、 +そこを指す RewriteRule がある +場合、Alias が評価されるように +[PT] フラグを使用する必要があります。 +

+ +
Alias "/icons" "/usr/local/apache/icons"
+RewriteRule "/pics/(.+)\.jpg$" "/icons/$1.gif" [PT]
+ + +

+この場合に [PT] フラグを省略すると、Alias が無視され、 +'File not found' エラーが返されます。 +

+ +

PT フラグは L フラグを暗黙的に含みます: +リクエストを処理の次のフェーズに渡すために書き換えが停止されます。

+ +

PT フラグは、 +<Directory> セクションや +.htaccess ファイルなどのディレクトリ単位のコンテキストでは +暗黙的に含まれることに注意してください。これを回避する唯一の方法は、 +- に書き換えることです。

+ +
top
+
+

QSA|qsappend

+

+置換 URI にクエリ文字列が含まれる場合、 +RewriteRule のデフォルト動作は +既存のクエリ文字列を破棄し、新しく生成されたもので置き換えることです。 +[QSA] フラグを使用すると、クエリ文字列が結合されます。 +

+ +

以下のルールを考えてみましょう:

+ +
RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]
+ + +

[QSA] フラグがある場合、/pages/123?one=two へのリクエストは +/page.php?page=123&one=two にマッピングされます。 +[QSA] フラグがない場合、同じリクエストは /page.php?page=123 +にマッピングされます - つまり、既存のクエリ文字列は破棄されます。 +

+
top
+
+

QSD|qsdiscard

+

+リクエストされた URI にクエリ文字列が含まれ、ターゲット URI に含まれない +場合、RewriteRule のデフォルト +動作はそのクエリ文字列をターゲット URI にコピーすることです。 +[QSD] フラグを使用すると、クエリ文字列が破棄されます。 +

+ +

このフラグはバージョン 2.4.0 以降で使用可能です。

+ +

+[QSD] と [QSA] を一緒に使用すると、[QSD] が優先されます。 +

+ +

+ターゲット URI にクエリ文字列がある場合は、デフォルトの動作が +観察されます - つまり、元のクエリ文字列は破棄され、 +RewriteRule ターゲット URI のクエリ文字列に +置き換えられます。 +

+ +
top
+
+

QSL|qslast

+

+デフォルトでは、置換内の最初の (左端の) 疑問符がパスとクエリ文字列を +区切ります。[QSL] フラグを使用すると、代わりに最後の (右端の) 疑問符で +2 つのコンポーネントを分割するよう +RewriteRule に指示します。

+ +

+これは、ファイル名にリテラルの疑問符が含まれるファイルへのマッピング時に +便利です。置換でクエリ文字列が使用されない場合、このフラグと組み合わせて +疑問符を追加できます。

+ +

このフラグはバージョン 2.4.19 以降で使用可能です。

+ +
top
+
+

R|redirect

+

+[R] フラグを使用すると、ブラウザに HTTP リダイレクトが発行されます。 +完全修飾 URL (つまり http://servername/ を含む) が指定された +場合、その場所へのリダイレクトが発行されます。それ以外の場合は、 +現在のプロトコル、サーバ名、ポート番号がリダイレクトで送信される +URL の生成に使用されます。 +

+ +

+[R=305] のような構文を使用して、任意の有効な HTTP レスポンスステータス +コードを指定できます。指定されない場合、デフォルトの 302 ステータスコードが +使用されます。指定されたステータスコードは必ずしもリダイレクト (3xx) +ステータスコードである必要はありません。ただし、リダイレクト範囲 (300-399) +外のステータスコードの場合、置換文字列は完全に破棄され、L +が使用されたかのように書き換えが停止されます。

+ +

レスポンスステータスコードに加えて、シンボリック名を使用して +リダイレクトステータスを指定することもできます: temp +(デフォルト)、permanent、または seeother。

+ +

+[R] フラグはほぼ常に [L] と組み合わせて使用します (つまり [R,L])。 +[R] フラグ単独では、URI に http://thishost[:thisport] を +前置しますが、これをルールセットの次のルールに渡すため、しばしば +'Invalid URI in request' 警告が発生します。 +

+ +

注: httpd は HTTP 仕様に含まれるステータスコードのみをサポートします。 +認識されないステータスコードを使用すると、500 エラーとエラーログ +メッセージが発生します。

+ +
top
+
+

S|skip

+

[S] フラグは、実行したくないルールをスキップするために使用されます。 +スキップフラグの構文は [S=N] で、N はスキップする +ルールの数を表します (RewriteRule +と先行する RewriteCond +ディレクティブがマッチする場合)。これは書き換えルールセット内の +goto 文と考えることができます。以下の例では、リクエストされた +URI が実際のファイルに対応しない場合にのみ +RewriteRule を実行したいとします。

+ +
# Is the request for a non-existent file?
+RewriteCond "%{REQUEST_FILENAME}" !-f
+RewriteCond "%{REQUEST_FILENAME}" !-d
+# If so, skip these two RewriteRules
+RewriteRule ".?"                  "-" [S=2]
+
+RewriteRule "(.*\.gif)"           "images.php?$1"
+RewriteRule "(.*\.html)"          "docs.php?$1"
+ + +

このテクニックが有用なのは、RewriteCond は直後の +RewriteRule にのみ適用されるため +です。複数の RewriteRule に RewriteCond を +適用したい場合の一つの方法は、条件を否定して [Skip] フラグ付きの +RewriteRule を追加することです。これを使用して疑似的な +if-then-else 構造を作成できます: then 節の最後のルールが +skip=N となり、N は else 節のルール数です:

+
# Does the file exist?
+RewriteCond "%{REQUEST_FILENAME}" !-f
+RewriteCond "%{REQUEST_FILENAME}" !-d
+# Create an if-then-else construct by skipping 3 lines if we meant to go to the "else" stanza.
+RewriteRule ".?"                  "-" [S=3]
+
+# IF the file exists, then:
+    RewriteRule "(.*\.gif)"  "images.php?$1"
+    RewriteRule "(.*\.html)" "docs.php?$1"
+    # Skip past the "else" stanza.
+    RewriteRule ".?"         "-" [S=1]
+# ELSE...
+    RewriteRule "(.*)"       "404.php?file=$1"
+# END
+ + +

この種の設定は、代わりに <If>、 +<ElseIf>、<Else> ディレクティブを使用する方が +おそらく簡単でしょう。

+ +
top
+
+

T|type

+

結果のレスポンスが送信される MIME タイプを設定します。 +これは AddType ディレクティブと +同じ効果を持ちます。

+ +

例えば、特定の方法でリクエストされた場合に Perl ソースコードを +プレーンテキストとして提供するために、以下のテクニックを使用できます:

+ +
# .pl ファイルをプレーンテキストとして提供
+RewriteRule "\.pl$"  "-" [T=text/plain]
+ + +

あるいは、ファイル拡張子のない jpeg 画像を生成するカメラがある場合、 +ファイル名によって正しい MIME タイプで画像を提供するよう強制できます:

+ +
# 名前に 'IMG' を含むファイルは jpg 画像
+RewriteRule "IMG"  "-" [T=image/jpg]
+ + +

これは簡単な例であり、代わりに +<FilesMatch> を使用する +方が良いことに注意してください。問題に対する代替の解決策を常に検討して +から書き換えに頼ってください。書き換えは常に代替手段よりも +効率が悪くなります。

+ +

+ディレクトリ単位のコンテキストで使用する場合は、 +mod_rewrite 処理の全ラウンドの置換として +- (ダッシュ) のみを使用してください。そうしないと、 +内部的な再処理 (mod_rewrite 処理の後続ラウンドを含む) +により、このフラグで設定された MIME タイプが失われます。 +現在の mod_rewrite 処理ラウンドを終了するために +L フラグが有用です。

+
top
+
+

UnsafeAllow3F

+

このフラグを設定すると、書き換え対象の HTTP リクエストに + エンコードされた疑問符 '%3f' が含まれ、書き換え結果の置換に + '?' がある場合でも書き換えを続行できます。これは、悪意のある + URL がエンコードされた疑問符のキャプチャと再置換を利用するのを + 防止します。

+
top
+
+

UnsafePrefixStat

+

このフラグを設定すると、サーバスコープの置換が変数や + バックリファレンスで始まり、ファイルシステムパスに解決される場合に + 必要です。これらの置換にはドキュメントルートがプレフィックスとして + 付加されません。これは、悪意のある URL が展開された置換を + 予期しないファイルシステムの場所にマッピングさせるのを防止します。

+ +

Available in Apache HTTP Server 2.5.1 and later.

+
top
+
+

UNC

+

このフラグを設定すると、Windows UNC パスで使用される複数の + 先頭スラッシュのマージが防止されます。ルールの置換がリテラルの + 複数スラッシュで始まる場合、このフラグは不要です。

+ +

Available in Apache HTTP Server 2.5.1 and later.

+
+
+

翻訳済み言語:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/flags.html.ko.euc-kr b/docs/manual/rewrite/flags.html.ko.euc-kr new file mode 100644 index 0000000000..bb74fc2e3d --- /dev/null +++ b/docs/manual/rewrite/flags.html.ko.euc-kr @@ -0,0 +1,943 @@ + + + + + +RewriteRule ����� - Apache HTTP Server Version 2.5 + + + + + + + +
<-
+

RewriteRule �����

+
+

°¡´ÉÇÑ ¾ð¾î:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ +

�� 문ì���� RewriteRule +ì§����´ì�� �¬ì�©í�� �� ���� ����ê·¸ë�� �¼ì����ë©�, ���¸í�� �¤ë�ê³� +����ë¥� ��ê³µí�©ë����.

+
+ +
top
+
+

���

+

RewriteRule�� +������ ���� �´ì���� ����ê·¸ë� ������ �� ���µë����. ����ê·¸ë�� +ê·�ì¹� ���� ��ê´��� ���� �¬í�¨ë��ë©�, �¬ë�� ����ê·¸ë�� �¼í��ë¡� +구ë��©ë����.

+
RewriteRule pattern target [Flag1,Flag2,Flag3]
+ + +

ê°� ����ê·¸ë�� (ëª� ê°�ì§� ���¸ë�� ���¸í��ê³�) CO�� +ê°��� ì§§ì�� ������ cookie�� ê°��� ê¸� ����ë¥� +ê°�ì§�����. ì§§ì�� ����ë¥� �¬ì�©í���� ê²��� ê°��� �¼ë����´ì�ë§�, +ê°� ����ê·¸ê� 무ì���� ����ì§� 기ì�µí��ê¸� ���� ê¸� ������ +�µì���´ì��� ê²��� ì¢��µë����. �¼ë� ����ê·¸ë�� ���� �´ì���� +�¸ì��ë¥� ì·¨í�©ë����. ����ê·¸ë�� ����문ì��ë¥� 구ë���ì§� ���µë����.

+ +

��ì²�ê³� ê´��¨ë�� ë©����°ì�´í�°ë�� ë³�ê²½í���� ����ê·�(T=, H=, E=)�� +������리ë� ë°� htaccess 컨í���¤í�¸ì���� ���¼í�� �¬ì���� ì²�ë¦� +�¼ì�´ë�� ì¤��� ('-' �´ì�¸ì��) ì¹����� ������ �� �¨ê³¼ê°� ���µë����. +

+ +

�¬ê¸°������ �¬ì�� ê°��¥í�� ê°� ����ê·¸ì�� �¨ê� �¬ì�� ë°©ë��� +����ê°� �����©ë����.

+
top
+
+

B (��참조 �´ì�¤ì��´í��)

+

[B] ����ê·¸ë�� RewriteRule�� +ë³����� ���©í��ê¸� ���� ���«ì��ê°� ���� 문ì��ë¥� �´ì�¤ì��´í������ë¡� +ì§����©ë����.

+ +

mod_rewrite�� URL�� 매í����ê¸� ���� +�´ì�¤ì��´í��ë¥� �´ì���´ì�� ��ë¯�ë¡�, ��참조�� ���©ë�� �� +�´ì�¤ì��´í��ê°� �´ì���©ë����. B ����ê·¸ë�� �¬ì�©í��ë©� ��참조�� +���«ì��ê°� ���� 문ì��ê°� �´ì�¤ì��´í���©ë����. +��ë¥� �¤ì��, �¤ì�� ê·�ì¹��� ê³��¤í��������:

+ +

��ë²� ë³����� ���¬í�� �´ì�¤ì��´í���� ���´ì���� + "escape" 매í�� �¨ì��ë¥� 참조��������

+ + +
RewriteRule "^search/(.*)$" "/search.php?term=$1"
+ + +

ê²����´ê� 'x & y/z'�� ê²½ì�� ë¸��¼ì�°ì���� �´ë�� +'x%20%26%20y%2Fz'ë¡� �¸ì��©í���� 'search/x%20%26%20y%2Fz' +��ì²��� ë§�������. B ����ê·� ���� �� �¬ì���� ê·�ì¹��� +'search.php?term=x & y/z'ë¡� 매í����ë©�, �´ë�� ���¨í�� +URL�� ����ë¯�ë¡� search.php?term=x%20&y%2Fz=ë¡� +�¸ì��©ë���� ������ ê²�ê³� �¤ë�����.

+ +

���¼í�� ê·�ì¹��� B ����ê·¸ë�� �¤ì����ë©� 매ê�ë³���ê°� ì¶��� URL�� +���¬ë��ê¸� ���� �¤ì�� �¸ì��©ë���� +/search.php?term=x%20%26%20y%2Fzë¡� �¬ë�르ê� +매í���©ë����.

+ +
RewriteRule "^search/(.*)$" "/search.php?term=$1" [B,PT]
+ + +

�� �¹ì�� ����ê°� �������¤ë©´ +AllowEncodedSlashesë¥� +On�¼ë� �¤ì���´ì�� �� ���� ���µë����. httpd�� +URL���� �¸ì��©ë�� �¬ë����ë¥� ���©í��ì§� ��ê³� ����ë¥� ë³´ë©´ +404ë¥� ë°�����ê¸� ��문ì������.

+ +

�� �´ì�¤ì��´í���� �¹í�� ��ë¡��� ���©ì���� �����©ë����. +ë°±ì����ê°� �´ì�¤ì��´í����ì§� ���� URL�� ����ë°��¼ë©´ ì¤��¨ë�� �� +��ê¸� ��문ì������.

+ +

�� ����ê·¸ì�� ������ RewriteCondë¥� �¬ì�©í���� %{THE_REQUEST}�� ���� +캡ì����� ê²��´ë©°, �´ë�� �¸ì��©ë�� ������ 문ì���´ì�� +캡ì��©ë����.

+ +

2.4.26 �´ì�������� ��참조���� �´ì�¤ì��´í���� �¹ì�� 문ì��ë¥� +���´í���� ������ �� ���µë����: [B=#?;]. +ì°¸ê�: �´ì�¤ì��´í���� 문ì�� 목ë��� 공백 문ì��ë¥� �¬ì�©í�� �� +��ì§�ë§� RewriteRule�� +��ì²� �� ë²�ì§� �¸ì��ë¥� �¸ì�©í�´ì�� ��ë©� 공백�� 목ë��� ë§�ì§�ë§� +문ì��ê°� ���´ì���� �� �©ë����.

+ +
# 공백ê³� 물ì����ë¥� �´ì�¤ì��´í���©ë����. 공백�� �¬í�¨ë�� ê²½ì��
+# ìµ�ì¢� �¸ì�� 주ì���� �°ì�´í��ê°� �����©ë����.
+RewriteRule "^search/(.*)$" "/search.php?term=$1" "[B= ?]"
+ + +

�� ë°©ì���¼ë� �´ì�¤ì��´í������ 문ì��ë¥� �������¤ë©´ +#flag_bne�� +#flag_bctlsë¥� 참조��������

+
top
+
+

BNP|backrefnoplus (공백�� +ë¡� �´ì�¤ì��´í����ì§� ����)

+

[BNP] ����ê·¸ë�� RewriteRule�� +��참조���� 공백 문ì��ë¥� '+' ���� %20�¼ë� �´ì�¤ì��´í������ë¡� +ì§����©ë����. ��참조ê°� 쿼리 문ì���´ì�� ���� ê²½ë� 구ì�� �������� +�¬ì�©ë�� �� ���©í�©ë����.

+ +
# 쿼리 문ì���´ì�� �µí�� ���� ��ì¶��� �¬ì�©ë���� + ����
+# ê²½ë����� 공백�� %20�¼ë� �´ì�¤ì��´í��
+RewriteRule "^search/(.*)$" "/search.php/$1" "[B,BNP]"
+ + + +

�� ����ê·¸ë�� ë²��� 2.4.26 �´ì������ �¬ì�©í�� �� ���µë����.

+
top
+
+

BCTLS

+

[BCTLS] ����ê·¸ë�� [B] ����ê·¸ì�� ���¬í��ì§�ë§� ���� 문ì���� +공백 문ì��ë§� �´ì�¤ì��´í���©ë����. �´ê��� �¸ì��©ë��ì§� ���� ì±� +쿼리 문ì���´ë� ë³µì�¬ë�� �� ê±°ë����� ���¼í�� 문ì�� �¸í�¸ì������. +

+ +
# ���� 문ì���� 공백�� �´ì�¤ì��´í��
+RewriteRule "^search/(.*)$" "/search.php/$1" "[BCTLS]"
+ + +

�� ����ê·¸ë�� ë²��� 2.5.1 �´ì������ �¬ì�©í�� �� ���µë����.

+ +
top
+
+

BNE

+

[BNE=...]�� 문ì�� 목ë��� [B] ���� [BCTLS] ����ê·¸ì�� +문ì���� ���� ���¸ë� ì²�리ë�©ë����. ���´ë�� 문ì���� �´ì�¤ì��´í����ì§� +���µë����. +

+ +
# 기본 문ì��ë¥� �´ì�¤ì��´í������ /�� �¨ê�
+RewriteRule "^search/(.*)$" "/search.php?term=$1" "[B,BNE=/]"
+ + +

�� ����ê·¸ë�� ë²��� 2.5.1 �´ì������ �¬ì�©í�� �� ���µë����.

+
top
+
+

C|chain

+

[C] ���� [chain] ����ê·¸ë�� RewriteRule�� �¤ì�� ê·�ì¹��� +ì²´ì�¸ë���� ������ ����������. ì¦�, ê·�ì¹��� �¼ì���ë©� ������ +ê°��� ì²�리ë��ê³� ���´ê� �¤ì�� ê·�ì¹��¼ë� �´ë���©ë����. ê·¸ë�¬ë�� +�¼ì���ì§� ���¼ë©´ �¤ì�� ê·�ì¹�ê³� �¨ê� ì²´ì�¸ë�� �¤ë¥¸ 모ë�� ê·�ì¹��� +ê±´ë���°ì�´ì�����.

+ +
top
+
+

CO|cookie

+

[CO] ���� [cookie] ����ê·¸ë�� �¬ì�©í��ë©� �¹ì�� +RewriteRule�� +�¼ì��� �� ì¿��¤ë�� �¤ì���� �� ���µë����. �¸ì���� �� ê°��� +���� ������ �¤ì�� ê°��� ������ ����ë¡� 구ì�±ë�©ë����.

+ +

����ê·¸ì�� ��ì²� 구문�� 모ë�� ���±ì�� �¬í�¨í���� +�¤ì��ê³� ê°��µë����:

+ +

+[CO=NAME:VALUE:DOMAIN:lifetime:path:secure:httponly:samesite] +

+ +

ì¿��� ������ 리í�°ë�� ':' 문ì��ê°� ������ ê²½ì�� ��ì²� 구문�� +�¬ì�©í�� �� ���µë����. ��ì²� 구문�� �������¤ë©´ ì¿��� "Name" ���� +';' 문ì��ë¥� ë¶��´ê� ���� 구ë���ë¥� ';'ë¡� ì§����´ì�� �©ë����.

+ +

+[CO=;NAME;VALUE:MOREVALUE;DOMAIN;lifetime;path;secure;httponly;samesite] +

+ +

ì¿��¤ë�� �¤ì�����¤ë©´ �´ë�, ê°� ë°� ��ë©��¸ì�� ���¸í�´ì�� +�©ë����.

+ +
+
Domain
+
ì¿��¤ê� ���¨í�� ��ë©��¸ì������. www.example.comê³� +ê°��� �¸ì�¤í�¸ë��´ê±°�� .example.comê³� ê°��� +��ë©��¸ì�� �� ���µë����. ���¼ë� 구ë��� ìµ��� �� ë¶�ë¶��´ì�´ì�� +�©ë����. ì¦�, �¨ì���� .com�´ë�� +.net�� �� ���µë����. �´ë�¬í�� ì¢�ë¥��� ì¿��¤ë�� +ì¿��� ë³´ì�� 모ë�¸ì�� ���� ê¸�ì§��©ë����.
+
+ +

�������¼ë� �¤ì�� ê°��� �¤ì���� �� ���µë����:

+ +
+
Lifetime
+
ì¿��¤ê� ì§������� ��ê°�(ë¶�)������.
+
ê°��� 0�´ë©´ ì¿��¤ê� ���� ë¸��¼ì�°ì�� �¸ì�� ����ë§� ì§����©ë����. +ì§�����ì§� ���¼ë©´ �´ê��� 기본ê°�������.
+
���� ê°��� ë¸��¼ì�°ì������ ì¿��¤ë�� �����©ë����.
+ +
Path
+
���� �¹ì�¬ì�´í�¸ì���� ì¿��¤ê� ���¨í�� ê²½ë�������. +��: /customers/ ���� +/files/download/.
+
기본���¼ë� /ë¡� �¤ì���©ë���� - ì¦�, +��ì²� �¹ì�¬ì�´í�¸ì������.
+ +
Secure
+
secure, true ���� +1ë¡� �¤ì����ë©� ì¿��¤ë�� ë³´ì��(https) �°ê²°�� +�µí�´ì��ë§� ���¬ë�©ë����.
+ +
httponly
+
HttpOnly, true ���� +1ë¡� �¤ì����ë©� ì¿��¤ì�� +HttpOnly ����ê·¸ê� �¤ì����ë©�, �´ë�� �� 기ë�¥ì�� +ì§������� ë¸��¼ì�°ì������ ì¿��¤ê� JavaScript ì½���ë¡� ��ê·¼í�� �� +������ ��미í�©ë����.
+ +
samesite
+
false ���� 0 �´ì�¸ì�� ê°��¼ë� +�¤ì����ë©� SameSite ���±ì�� ì§����� ê°��¼ë� +�¤ì���©ë����. �¼ë����� ê°��� None, +Lax ë°� Strict������. +2.5.1 �´ì������ �¬ì�©í�� �� ���µë����.
+
+ + +

�¤ì�� ����ë¥� ê³��¤í��������:

+ +
RewriteEngine On
+RewriteRule   "^/index\.html"   "-" [CO=frontdoor:yes:.example.com:1440:/]
+ + +

주ì�´ì� �������� ê·�ì¹��� ��ì²��� �¬ì���±í��ì§� ���µë����. +"-" �¬ì���� ������ mod_rewrite��ê²� ��ì²��� +ë³�ê²� ���� �µê³¼���¤ë��ë¡� ì§����©ë����. ���� 'frontdoor'�¼ë�� +ì¿��¤ë�� 'yes' ê°��¼ë� �¤ì���©ë����. ì¿��¤ë�� +.example.com ��ë©��¸ì�� 모ë�� �¸ì�¤í�¸ì�� ���¨í�©ë����. +1440ë¶�(24��ê°�) ���� ë§�ë£�����ë¡� �¤ì����ë©� 모ë�� URI�� ���� +ë°����©ë����.

+ +
top
+
+

DPI|discardpath

+

DPI ����ê·¸ë�� �¬ì���±ë�� URI�� PATH_INFO ë¶�ë¶��� +ë²�립ë����.

+

�� ����ê·¸ë�� ë²��� 2.2.12 �´ì������ �¬ì�©í�� �� ���µë����.

+

������리ë� 컨í���¤í�¸ì���� ê°� +RewriteRule�� ë¹�êµ����� URI�� URI�� +PATH_INFO�� ���� ê°��� �°ê²°������.

+ +

���� URI�� �´ë�¼ì�´ì�¸í�¸ê� ��ì²��� ì´�ê¸� URI�´ê±°��, +�´ì�� mod_rewrite ì²�ë¦� �¼ì�´ë���� ê²°ê³¼�´ê±°��, +���� mod_rewrite ì²�ë¦� �¼ì�´ë������ �´ì�� +ê·�ì¹��� ê²°ê³¼�� �� ���µë����.

+ +

ë°�ë©�, ê°� ê·�ì¹� ���� URI�� ì¶�ê°����� PATH_INFO�� +�� mod_rewrite ì²�ë¦� �¼ì�´ë�� ���� PATH_INFO +ê°�ë§� ë°����©ë����. ê²°ê³¼���¼ë� URI�� �� ë¶�ë¶��� �¬ë�� +RewriteRule ì§����´ì���� ì¹����¼ë� +�¼ì���ê³� ë³µì�¬ë�� ��, URI�� �´ë�� ë¶�ë¶��� ���� PATH_INFO���� +����ì§� ê³��¤í��ì§� ���¼ë©´ ìµ�ì¢� URI�� PATH_INFO�� �¬ë�� ë³µì�¬ë³¸�� +ì¶�ê°��� �� ���µë����.

+ +

�´ì�� ��ì²��� ���� ���¤í�� 매í������ ���±ë�� PATH_INFOê°� +ê´��� ���� ì¹����� �� ����ê·¸ë�� �¬ì�©í��������. �� ����ê·¸ë�� +�� mod_rewrite ì²�ë¦� �¼ì�´ë�� ���� �¤ì���� +PATH_INFOë¥� ��구ì���¼ë� ���µë����. PATH_INFO�� ���� +mod_rewrite ì²�ë¦� �¼ì�´ë��ê°� ��ë£��� ��ê¹�ì§� +�¤ì�� ê³��°ë��ì§� ���µë����. �� ì²�ë¦� �¼ì�´ë�� ì¤� ���� ê·�ì¹��� +PATH_INFOê°� ì¶�ê°���ì§� ���� ì¹����� ì§������� ê²°ê³¼ë§� ë´�����.

+
top
+
+

E|env

+

[E] ���� [env] ����ê·¸ë�� �¬ì�©í��ë©� ��ê²� ë³����� ê°��� +�¤ì���� �� ���µë����. �¼ë� ��ê²� ë³����� ê·�ì¹��� �¤í���� ���� +�¤ì���� �� ���¼ë��ë¡�, �¤ì���� ê²��� �´ì���� �� ���¤ë�� ���� +������������. ��ê²� ë³����� ���� ë°©ì���� ���� ���¸í�� �´ì�©ì�� +��ê²� ë³��� 문ì��ë¥� 참조��������.

+ +

�� ����ê·¸ì�� ��ì²� 구문�� �¤ì��ê³� ê°��µë����:

+ +
[E=VAR:VAL]
+[E=!VAR]
+ + +

VAL���� ���¥ë���� ��참조($N +���� %N)ê°� �¬í�¨ë�� �� ���µë����.

+ +

ì§§ì�� ����ë¥� �¬ì�©í����

+ +

+[E=VAR] +

+ +

VAR�´ë�¼ë�� ��ê²� ë³���ë¥� ë¹� ê°��¼ë� �¤ì���� �� +���µë����.

+ +

�¤ì�� ����

+ +

+[E=!VAR] +

+ +

ë¥� �¬ì�©í��ë©� �´ì���� �¤ì���� VAR�´ë�¼ë�� +��ê²� ë³���ë¥� �´ì���� �� ���µë����.

+ +

��ê²� ë³����� CGI ��ë¡�ê·¸ë��, �¤ë¥¸ RewriteRule ì§����� ���� +CustomLog ì§����´ë�� �¬í�¨í�� �¤ì���� 컨í���¤í�¸ì���� �¬ì�©í�� �� +���µë����.

+ +

�¤ì�� ������ ��ì²��� URIê°� �´ë�¸ì� ���¼ì�� ê²½ì�� +'image'�¼ë�� ��ê²� ë³���ë¥� '1' ê°��¼ë� �¤ì���©ë����. ê·¸ë�� �¤ì�� +�´ë�� ��ê²� ë³���ë¥� �¬ì�©í���� ��ê·� ë¡�ê·¸ì���� �´ë�� ��ì²��� +���¸í�©ë����.

+ +
RewriteRule "\.(png|gif|jpg)$"   "-" [E=image:1]
+CustomLog   "logs/access_log"    combined env=!image
+ + +

�� ���¼í�� �¨ê³¼�� SetEnvIfë¥� �¬ì�©í���� �»ì�� �� +���µë����. �� 기ì���� ê¶��� �¬í���� ���� ����ë¡� ��ê³µë�©ë����.

+
top
+
+

END

+

[END] ����ê·¸ë�� �¬ì�©í��ë©� ([L]ê³� ê°���) ���� �¬ì���� ì²�ë¦� +�¼ì�´ë��ë¥� ì¢�ë£��� ë¿�ë§� ������ ������리ë�(htaccess) +컨í���¤í�¸ì���� ���� �¬ì���� ì²�리ê� ë°������� ê²��� +ë°©ì��©ë����.

+ +

�´ê��� �¸ë� 리ë�¤ì�´ë���¸ë� �¸í�� �� ��ì²����� ���©ë��ì§� +���µë����.

+
top
+
+

F|forbidden

+

[F] ����ê·¸ë�� �¬ì�©í��ë©� ��ë²�ê°� �´ë�¼ì�´ì�¸í�¸ì�� 403 Forbidden +���� ì½���ë¥� ë°����©ë����. Deny ì§����´ë�� +�¬ì�©í���� ���¼í�� ������ ������ �� ��ì§�ë§�, �´ê��� Forbidden +����ë¥� ���¹í���� �� �� ë§��� ���°ì�±ì�� ��ê³µí�©ë����.

+ +

�¤ì�� ê·�ì¹��� ��ë²����� .exe ���¼ì�� +�¤ì�´ë���ë¥� ê¸�ì§��©ë����.

+ +
RewriteRule "\.exe"   "-" [F]
+ + +

�� ������ �¬ì���� ������ "-" 구문�� �¬ì�©í��ë©�, ��ì²��� +URIê°� ������ì§� ������ ��미í�©ë����. ��ì²��� ê¸�ì§����¤ë�� ê²½ì�� +�¤ë¥¸ URIë¡� �¬ì���±í�� �´ì��ê°� ���µë����.

+ +

[F]ë¥� �¬ì�©í�� �� [L]�� �����©ë���� - ì¦�, ���µì�� ì¦��� +ë°�����ê³� ì¶�ê°� ê·�ì¹��� ��ê°���ì§� ���µë����.

+ +
top
+
+

G|gone

+

[G] ����ê·¸ë�� ��ë²�ê°� ���µê³¼ �¨ê� 410 Gone ����ë¥� +ë°�������ë¡� ê°����©ë����. �´ê��� ������ �´ì���� �¬ì�� +ê°��¥í��ì§�ë§� �� �´ì�� �¬ì�©í�� �� ������ ����������.

+ +

[F] ����ê·¸ì�� ë§�ì°¬ê�ì§�ë¡� [G] ����ê·¸ë�� �¬ì�©í�� ���� +�¼ë����¼ë� �¬ì���� ������ "-" 구문�� �¬ì�©í�©ë����:

+ +
RewriteRule "oldproduct"   "-" [G,NC]
+ + +

[G]ë¥� �¬ì�©í�� �� [L]�� �����©ë���� - ì¦�, ���µì�� ì¦��� +ë°�����ê³� ì¶�ê°� ê·�ì¹��� ��ê°���ì§� ���µë����.

+ +
top
+
+

H|handler

+

ê²°ê³¼ ��ì²��� ì§����� �¸ë�¤ë�¬ë� ì²�리ë����ë¡� ê°����©ë����. +��ë¥� �¤ì��, ���� ���¥ì��ê°� ���� 모ë�� ���¼ì�� php �¸ë�¤ë�¬ë� +���±í����ë¡� ê°����� �� ���µë����:

+ +
RewriteRule "!\."  "-" [H=application/x-httpd-php]
+ + +

+���� ��ê·� ������ - !\. - �� 리í�°ë�� . +문ì��ë¥� �¬í�¨í��ì§� ���� 모ë�� ��ì²�ê³� �¼ì��©ë����. +

+ +

�´ê��� �¼ë� ì¡°ê±´�� �°ë�� �¸ë�¤ë�¬ë�� ê°������� �°ì���� +�¬ì�©í�� �� ���µë����. ��ë¥� �¤ì��, ��ë²�ë³� 컨í���¤í�¸ì���� �¬ì�©ë���� +�¤ì�� �¤ë���«ì�� .phps ���¥ì��ë¡� ��ì²��� ê²½ì�� +.php ���¼ì�� mod_php�� ���� +��������ë¡� �©ë����:

+ +
RewriteRule "^(/source/.+\.php)s$" "$1" [H=application/x-httpd-php-source]
+ + +

���� ��ê·� ������ - ^(/source/.+\.php)s$ - +�� /source/ë¡� ������ê³� 1ê°� �´ì���� 문ì��ê°� �¤ë�°ë¥´ê³� +리í�°ë�� .phpsê°� �¤ë�°ë¥´�� 모ë�� ��ì²�ê³� �¼ì��©ë����. +��참조 $1�� ��ê·� �������� ê´��� ���� 캡ì��� �¼ì�ë¥� +참조�©ë����.

+
top
+
+

L|last

+

[L] ����ê·¸ë�� mod_rewriteê°� ê·�ì¹� �¸í�¸ì�� +ì²�리ë�� ì¤�ì§�����ë¡� �©ë����. ��ë¶�ë¶��� 컨í���¤í�¸ì���� �´ê��� +ê·�ì¹��� �¼ì���ë©� �� �´ì�� ê·�ì¹��� ì²�리ë��ì§� ������ ��미í�©ë����. +�´ê��� Perl�� last ëª��¹ì�´ë�� C�� +break ëª��¹ì�� �´ë�¹í�©ë����. �� ����ê·¸ë�� �¬ì�©í���� +���� ê·�ì¹��� ì¶�ê°� ê·�ì¹��� ê³��¤í��ì§� ��ê³� ì¦��� ���©ë���´ì�� +�¨ì�� ����������.

+ +

.htaccess ���¼ì�´ë�� +<Directory> +�¹ì������ RewriteRule�� +�¬ì�©í���� ê²½ì�� ê·�ì¹��� ì²�리ë���� ë°©ì���� ���� �´í�´ê� ì¤����©ë����. +�´ê��� ê°��¨í�� ������ ê·�ì¹��� ì²�리ë��ë©� �¬ì���±ë�� ��ì²��� +URL ���� ��ì§��� �¤ì�� ���¬ë���� ì²�리ë���¤ë�� ê²�������. +�¬ì���±ë�� ��ì²��� ì²�리ë�� �� .htaccess ���¼ì�´ë�� +<Directory> +�¹ì���� �¤ì�� ë§���ì§� �� ���¼ë©°, �°ë�¼ì�� ê·�ì¹� �¸í�¸ê� ì²���ë¶��� +�¤ì�� �¤í���� �� ���µë����. ê°��� �¼ë����¼ë� �´ê��� ê·�ì¹� ì¤� +����ê°� �´ë� ���� �¸ë� 리ë�¤ì�´ë���¸ë�� �¼ì�¼ì� ��ì²� ì²�리ê� +�¤ì�� �������� ê²½ì�°ì�� ë°����©ë����.

+ +

�°ë�¼ì�� �´ë�¬í�� 컨í���¤í�� ì¤� �������� RewriteRule ì§����´ë�� +�¬ì�©í���� ê²½ì�� ê·�ì¹��� 루í���� �¼í��ê¸� ���� ëª����� ì¡°ì�ë¥� +ì·¨í��ê³�, ������ ������ ��ë¡� �¼ë�¨ì�� ê·�ì¹��� �¤í���� ì¢�ë£���ê¸� +���� [L] ����ê·¸ì��ë§� ��ì¡´í��ì§� ���� ê²��� ì¤����©ë����.

+ +

���� ����ê·¸ì�� [END]�� ���� �¬ì���� ì²�ë¦� �¼ì�´ë��ë¥� +ì¢�ë£��� ë¿�ë§� ������ ������리ë�(htaccess) 컨í���¤í�¸ì���� +���� �¬ì���� ì²�리ê� ë°������� ê²��� ë°©ì��©ë����. �´ê��� +�¸ë� 리ë�¤ì�´ë���¸ë� �¸í�� �� ��ì²����� ���©ë��ì§� ���µë����.

+ +

�¬ê¸° 주ì�´ì� ������ 모ë�� ��ì²��� index.phpë¡� +�¬ì���±í��ë©�, ���� ��ì²��� index.php�� 쿼리 문ì���� +�¸ì��ë¡� ��ê³µí�©ë����. ê·¸ë�¬ë�� +RewriteCond�� +��ì²��� �´ë�� index.php�� ���� ê²��� ê²½ì�� +RewriteRule�� +ê±´ë���°ì�´ì���ë¡� �©ë����.

+ +
RewriteBase "/"
+RewriteCond "%{REQUEST_URI}" !=/index.php
+RewriteRule "^(.*)"          "/index.php?req=$1" [L,PT]
+ +
top
+
+

N|next

+

+[N] ����ê·¸ë�� ê·�ì¹� �¸í�¸ë�� ì§�ê¸�ê¹�ì§��� ê·�ì¹� �¸í�� ê²°ê³¼ë¥� +�������¼ë� �¬ì�©í���� ì²���ë¶��� �¤ì�� ��������ë¡� �©ë����. +루í��ë¥� ì´����� �� ���¼ë��ë¡� ê·¹ë���� 주ì��ë¥� 기ì�¸ì�� +�¬ì�©í��������. +

+

+[Next] ����ê·¸ë�� ��ë¥� �¤ì��, ��ì²����� �¹ì�� 문ì���´ì�´ë�� +문ì��ë¥� ë°�ë³µì���¼ë� ��ì²´í���¤ë�� ê²½ì�°ì�� �¬ì�©í�� �� ���µë����. +�¬ê¸° ������ ������ ��ì²��� 모ë�� ê³³ì���� Aë¥� Bë¡� ��ì²´í��ë©� +�� �´ì�� ��ì²´í�� Aê°� ���� ��ê¹�ì§� ê³����©ë����. +

+
RewriteRule "(.*)A(.*)" "$1B$2" [N]
+ +

�´ê��� while 루í��ë¡� ��ê°��� �� ���µë����: +�� �¨í�´ì�� �¬ì���� �¼ì����� ����(ì¦�, URI�� �¬ì���� +Aê°� �¬í�¨ë���� ���� ����) �� ì¹����� +�����©ë����(ì¦�, Aë¥� Bë¡� +��ì²´í�©ë����).

+ +

2.5.0 �´ì������ �� 모ë���� ������ì§� ���� 루í���¼ë�ë¶��� +ë³´í�¸í��ê¸� ���� 10,000ë²��� ë°�ë³� ���� �¤ë�ë¥� ë°����©ë����. +N ����ê·¸ì�� ì¶�ê°����� �������� ìµ��� ë°�ë³� ����ë¥� ì§����� �� +���µë����.

+
# 루í���� ê°� �¨ì�¤ì���� 1ê°��� 문ì��ë¥� ��ì²´í�� ����
+RewriteRule "(.+)[><;]$" "$1" [N=32000]
+# ... ���� 10ë²� 루í�� �� �¬ê¸°
+RewriteRule "(.+)[><;]$" "$1" [N=10]
+ + +
top
+
+

NC|nocase

+

[NC] ����ê·¸ë�� �¬ì�©í��ë©� +RewriteRule�� +����문ì��ë¥� 구ë���ì§� ���� ë°©ì���¼ë� �¼ì��©ë����. ì¦�, +�¼ì����� URI���� 문ì��ê°� ��문ì���¸ì� ��문ì���¸ì� ��ê´���ì§� +���µë����.

+ +

���� �������� �´ë�¸ì� ���¼ì�� ���� 모ë�� ��ì²��� ���� +�´ë�¸ì� ��ë²�ë¡� ��ë¡����©ë����. �¼ì��� ����문ì��ë¥� 구ë���ì§� +���¼ë��ë¡�, ��ë¥� �¤ì�� .jpg�� .JPG +���� 모ë�� ���©ë�©ë����.

+ +
RewriteRule "(.*\.(jpg|gif|png))$" "http://images.example.com$1" [P,NC]
+ +
top
+
+

NE|noescape

+

기본���¼ë� RewriteRule�� +�¸ë� 리ë�¤ì�´ë���¸ë� �´ì�´ì� ��, ì¶��¥ì���� �¤ì�� ���� �¸í�¸ì�� �¬í�¨ë��ì§� +���� 모ë�� 문ì���� 16ì§��� ì½���(�¼ì�¼í�� �¸ì���)ë¡� ë³����©ë����:

+ +
    +
  • ���«ì�� 문ì��: A-Z, a-z, + 0-9
  • +
  • �¹ì�� 문ì��: $-_.+!*'(),:;@&=/~
  • +
+ +

��ë¥� �¤ì��, #�� %23�¼ë�, +?�� %3Fë¡� ë³����©ë����. +% 문ì���� (%25ë¡�) �´ì�¤ì��´í����ë¯�ë¡� +ì¹����� �´ë�� ì¡´ì�¬í���� �¼ì�¼í�� �¸ì��©ì�� �´ì� �¸ì��©ë�©ë����.

+ +

[NE] ����ê·¸ë�� �¬ì�©í��ë©� �� �´ì�¤ì��´í��ë¥� ë°©ì����� +#ê³� ?�� ê°��� 문ì��ê°� ������ì§� ��ê³� +리ë�¤ì�´ë���� URLë¡� ���¬ë�©ë����.

+ +
RewriteRule "^/anchor/(.+)" "/bigpage.html#$1" [NE,R]
+ + +

+���� ������ /anchor/xyzë¥� +/bigpage.html#xyzë¡� 리ë�¤ì�´ë���¸í�©ë����. +[NE]ë¥� ���µí��ë©� #�� 16ì§��� ì½����� %23�¼ë� +ë³������� 404 Not Found �¤ë� ì¡°ê±´�� ë°����©ë����. +

+ +
top
+
+

NS|nosubreq

+

[NS] ����ê·¸ë�� �¬ì�©í��ë©� ��ë¸���ì²����� ê·�ì¹��� �¬ì�©ë���� ê²��� +ë°©ì��©ë����. ��ë¥� �¤ì��, SSI(Server Side Include)ë¥� �¬ì�©í���� +�¬í�¨ë�� ���´ì��� ��ë¸���ì²��´ë©°, �´ë�� ��ë¸���ì²����� �¬ì���±ì�� +ë°������� ê²��� �¼í��ê³� �¶ì�� �� ���µë����. ���� +mod_dir�� ê°��¥í�� ������ë¦� 기본 ����(��: +index.html ����)�� ���� ��ë³´ë�� ì°¾ì�¼ë�� �� �� +�´ê��� �´ë� ��ë¸���ì²��´ë©°, ì¢�ì¢� �´ë�¬í�� ��ë¸���ì²����� +�¬ì���±ì�� �¼í��ê³� �¶ì�� ê²�������. ��ë¸���ì²������� ��ì²� +ê·�ì¹� �¸í�¸ê� ���©ë���� ê²��� ���� ���©í��ì§� ���¼ë©° �¤ë�ë¥� +�¼ì�¼í�� ���� ���µë����. �� ����ê·¸ë�� �¬ì�©í���� 문ì��ê°� ���� +ê·�ì¹��� ���¸í��������.

+ +

�� ê·�ì¹��� �¬ì�©í��ì§� �¬ë�ë¥� ê²°ì�����¤ë©´: CGI �¤í�¬ë¦½�¸ë� +URL�� �����¬ë�� ë¶��� CGI �¤í�¬ë¦½�¸ì�� ���� ì²�리ë����ë¡� ê°������� +ê²½ì��, ��ë¸���ì²����� 문ì��(���� ���¹í�� �¤ë��¤ë��)ê°� ë°����� +ê°��¥ì�±ì�� ���µë����. �´ë�¬í�� ê²½ì�� �� ����ê·¸ë�� +�¬ì�©í��������.

+ +

+HTML ���´ì��� �¼ë�ë¡� ë¡������� �´ë�¸ì�, ��ë°��¤í�¬ë¦½�� ���� +���� CSS ���¼ì�� ��ë¸���ì²��� �������� - ë¸��¼ì�°ì���� �´ë�� +ë³����� HTTP ��ì²��¼ë� ��ì²��©ë����. +

+
top
+
+

P|proxy

+

[P] ����ê·¸ë�� �¬ì�©í��ë©� ��ì²��� +mod_proxy�� ���� ì²�리ë��ê³� ��ë¡��� ��ì²��� +�µí�� ì²�리ë�©ë����. ��ë¥� �¤ì��, 모ë�� �´ë�¸ì� ��ì²��� ë°±ì���� +�´ë�¸ì� ��ë²��� ���� ì²�리ë����ë¡� ���¤ë©´ �¤ì��ê³� ê°��� �� �� +���µë����:

+ +
RewriteRule "/(.*)\.(jpg|gif|png)$" "http://images.example.com/$1.$2" [P]
+ + +

[P] ����ê·¸ë�� �¬ì�©í��ë©� [L]�� �����©ë���� - ì¦�, ��ì²��� +ì¦��� ��ë¡���ë¥� �µí�� ���¬ë��ê³� �´í���� ê·�ì¹��� ê³��¤ë��ì§� +���µë����.

+ +

+ì¹��� 문ì���´ì�� mod_proxyê°� ì²�리í�� �� ���� +���¨í�� URI(�¼ë����¼ë� http://hostname�¼ë� +����)�¸ì� ���¸í�´ì�� �©ë����. ê·¸ë��ì§� ���¼ë©´ ��ë¡��� 모ë������ +�¤ë�ê°� ë°����©ë����. �� ����ê·¸ë�� �¬ì�©í���� ë¡�ì»� ��ë²��� �¤ì���¤í���´ì�¤ì�� +��ê²� ì½���ì¸�ë¥� 매í������ +ProxyPass ì§����´ì�� +�� ê°��¥í�� 구í���� �¬ì�±í�©ë����.

+ +
+

ë³´ì�� ê²½ê�

+

ê·�ì¹��� ���� URL�� 구ì�±í�� ��, ��ë²�ê°� ��ë¡���ë¡� ������ +URL �¸í�¸ì�� ���� �´ë�¼ì�´ì�¸í�¸ì�� ���¥ì�¼ë� �¸í�� ë³´ì�� ���¥ì�� +ê³��¤í���� 주ì����������. URL�� �¤í�¤ë� ë°� �¸ì�¤í�¸ë� ë¶�ë¶��� +ê³������� ��ê±°ë�� �´ë�¼ì�´ì�¸í�¸ì��ê²� ë¶��¹í�� ���¥ì�� 주ì� +����ë¡� ��������.

+
+ +
+

�±ë�� ê²½ê�

+

�� ����ê·¸ë�� �¬ì�©í��ë©� mod_proxy�� �¬ì�©ì�� +�¸ë¦¬ê±°ë��ë©�, �� ê²½ì�� 기본 ��커ê� �¬ì�©ë���� �°ê²° +��ë§�/�¬ì�¬ì�©ì�� ì²�리í��ì§� ���¼ë��ë¡� ��êµ� �°ê²°�� ì²�리í��ì§� +���µë����.

+

��êµ� �°ê²°�� �¬ì�©í���¤ë©´ ���� URL�� �¤í�¤ë� ë°� �¸ì�¤í�� +ë¶�ë¶��� ���� Proxy +ë¸�ë¡��� ìµ����� �¤ì����ê³� ��ë¥� �¤ì�� ���������� �¤ì������ +ProxySet ì§����´ë�� +�¬í�¨í�´ì�� �©ë����.

+

ProxyPass ���� +ProxyPassMatchë¡� +�¤ì����ë©� ��êµ� �°ê²°�� �����¼ë� �¬ì�©ë�©ë����.

+
+ +

ì°¸ê�: �� ����ê·¸ë�� �¬ì�©í���¤ë©´ +mod_proxyê°� ���±í������ ���´ì�� �©ë����.

+ +
top
+
+

PT|passthrough

+ +

+RewriteRule�� ����(���� ì¹��� 문ì����)�� 기본���¼ë� ���� +ê²½ë�ë¡� ê°�주ë�©ë����. [PT] ����ê·¸ë�� �¬ì�©í��ë©� ���� URIë¡� +ì²�리ë�©ë����. ì¦�, [PT] ����ê·¸ë�� �¬ì�©í��ë©� +RewriteRule�� +ê²°ê³¼ê°� URL 매í���� �µí�� �¤ì�� ���¬ë��ë¯�ë¡�, +Alias, +Redirect ���� +ScriptAlias�� ê°��� +��ì¹� 기ë� 매í���� �¨ê³¼ë¥� ë°����� 기í��ë¥� ê°�ì§�����. +

+ +

+��ë¥� �¤ì��, /icons�� ���� +Aliasê°� ��ê³� +거기ë¥� ê°�리í�¤ë�� RewriteRule�� +���¤ë©´ Aliasê°� +��ê°�����ë¡� [PT] ����ê·¸ë�� �¬ì�©í�´ì�� �©ë����. +

+ +
Alias "/icons" "/usr/local/apache/icons"
+RewriteRule "/pics/(.+)\.jpg$" "/icons/$1.gif" [PT]
+ + +

+�� ê²½ì�� [PT] ����ê·¸ë�� ���µí��ë©� Aliasê°� 무ì������ +'File not found' �¤ë�ê°� ë°����©ë����. +

+ +

PT ����ê·¸ë�� L ����ê·¸ë�� +�����©ë����: ��ì²��� ì²�리ì�� �¤ì�� �¨ê�ë¡� ���¬í��ê¸� ���� +�¬ì���±ì�� ì¤�ì§��©ë����.

+ +

PT ����ê·¸ë�� +<Directory> +�¹ì���´ë�� .htaccess ���¼ê³¼ ê°��� ������리ë� +컨í���¤í�¸ì���� �����©ë����. �´ë�� �°í������ ���¼í�� ë°©ë��� +-ë¡� �¬ì���±í���� ê²�������.

+ +
top
+
+

QSA|qsappend

+

+��ì²� URI�� 쿼리 문ì���´ì�� �¬í�¨ë�� ê²½ì�� +RewriteRule�� +기본 ������ 기존 쿼리 문ì���´ì�� ë²�리ê� ��ë¡� ���±ë�� ê²��¼ë� +��ì²´í���� ê²�������. [QSA] ����ê·¸ë�� �¬ì�©í��ë©� 쿼리 문ì���´ì�� +ê²°í�©ë�©ë����. +

+ +

�¤ì�� ê·�ì¹��� ê³��¤í��������:

+ +
RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]
+ + +

[QSA] ����ê·¸ë�� �¬ì�©í��ë©� /pages/123?one=two�� +���� ��ì²��� /page.php?page=123&one=twoë¡� +매í���©ë����. [QSA] ����ê·� ���� ���¼í�� ��ì²��� +/page.php?page=123�¼ë� 매í���©ë���� - ì¦�, +기존 쿼리 문ì���´ì�� ë²��¤ì�����. +

+
top
+
+

QSD|qsdiscard

+

+��ì²��� URI�� 쿼리 문ì���´ì�� �¬í�¨ë���� ��ê³� ���� URI���� +���� ê²½ì��, RewriteRule�� +기본 ������ �´ë�� 쿼리 문ì���´ì�� ���� URI�� ë³µì�¬í���� +ê²�������. [QSD] ����ê·¸ë�� �¬ì�©í��ë©� 쿼리 문ì���´ì�� +ë²��¤ì�����. +

+ +

�� ����ê·¸ë�� ë²��� 2.4.0 �´ì������ �¬ì�©í�� �� ���µë����.

+ +

+[QSD]�� [QSA]ë¥� �¨ê� �¬ì�©í��ë©� [QSD]ê°� �°ì���©ë����. +

+ +

+���� URI�� 쿼리 문ì���´ì�� ���� ê²½ì�� 기본 ������ +ê´�ì°°ë�©ë���� - ì¦�, ���� 쿼리 문ì���´ì�� ë²��¤ì�ê³� +RewriteRule ���� URI�� 쿼리 문ì���´ë� +��ì²´ë�©ë����. +

+ +
top
+
+

QSL|qslast

+

+기본���¼ë� ì¹������� ì²� ë²�ì§�(ê°��� �¼ìª½) 물ì����ê°� ê²½ë��� +쿼리 문ì���´ì�� 구ë��©ë����. [QSL] ����ê·¸ë�� �¬ì�©í��ë©� +RewriteRule�� +���� ë§�ì§�ë§�(ê°��� �¤ë¥¸ìª�) 물ì����ë¥� �¬ì�©í���� �� 구ì�� ����ë¥� +ë¶�리í�©ë����.

+ +

+�´ê��� ���¼ë��� 리í�°ë�� 물ì����ê°� ���� ���¼ì�� 매í���� �� +���©í�©ë����. ì¹����� 쿼리 문ì���´ì�� �¬ì�©ë��ì§� ���� ê²½ì�� +�� ����ê·¸ì�� �¨ê� 물ì����ë¥� ì¶�ê°��� �� ���µë����.

+ +

�� ����ê·¸ë�� ë²��� 2.4.19 �´ì������ �¬ì�©í�� �� ���µë����.

+ +
top
+
+

R|redirect

+

+[R] ����ê·¸ë�� �¬ì�©í��ë©� ë¸��¼ì�°ì���� HTTP 리ë�¤ì�´ë���¸ê� +ë°����©ë����. ������ URL(ì¦�, +http://servername/ �¬í��)�� ì§�����ë©� +�´ë�� ��ì¹�ë¡� 리ë�¤ì�´ë���¸ê� ë°����©ë����. ê·¸ë��ì§� ���¼ë©´ +���� ��ë¡���ì½�, ��ë²�ëª� ë°� �¬í�� ë²��¸ê� 리ë�¤ì�´ë���¸ì�� +�¨ê� ���¡ë���� URL�� ���±í���� �� �¬ì�©ë�©ë����. +

+ +

+���¨í�� 모ë�� HTTP ���� ���� ì½���ë¥� +[R=305] 구문�¼ë� ì§����� �� ���¼ë©°, ì§�����ì§� ���¼ë©´ +302 ���� ì½���ê°� 기본���¼ë� �¬ì�©ë�©ë����. ì§����� ���� ì½���ê°� +ë°����� 리ë�¤ì�´ë����(3xx) ���� ì½����� ������ ���µë����. +ê·¸ë�¬ë�� ���� ì½���ê°� 리ë�¤ì�´ë���� ë²���(300-399) ë°��� ���¼ë©´ +ì¹��� 문ì���´ì�� ������ ������ê³� L�� �¬ì�©ë�� +ê²�ì²��� �¬ì���±ì�� ì¤�ì§��©ë����.

+ +

���� ���� ì½��� �¸ì���� 기í�� �´ë��� �¬ì�©í���� 리ë�¤ì�´ë���� +����ë¥� ì§����� ���� ���µë����: temp(기본ê°�), +permanent ���� seeother.

+ +

+ê±°ì�� ���� [R]�� [L]ê³� �¨ê� �¬ì�©í��ê³� �¶ì�� ê²�������(ì¦�, +[R,L]). [R] ����ê·� �¨ë���¼ë��� URI ���� +http://thishost[:thisport]ë¥� ì¶�ê°���ì§�ë§� +�´ë�� ê·�ì¹� �¸í�¸ì�� �¤ì�� ê·�ì¹��� ���¬í���� ì¢�ì¢� +'Invalid URI in request' ê²½ê�ë¥� ì´����©ë����. +

+ +

ì°¸ê�: httpd�� HTTP �¬ì���� �¬í�¨ë�� ���� ì½���ë§� +ì§����©ë����. �¸ì���� �� ���� ���� ì½���ë¥� �¬ì�©í��ë©� +500 �¤ë��� �¤ë� ë¡�ê·� ë©���ì§�ê°� ë°����©ë����.

+ +
top
+
+

S|skip

+

[S] ����ê·¸ë�� �¤í����ê³� �¶ì� ���� ê·�ì¹��� ê±´ë���°ë�� �� +�¬ì�©ë�©ë����. ê±´ë���°ê¸° ����ê·¸ì�� 구문�� [S=N]�´ë©°, +N�� ê±´ë���� ê·�ì¹��� ��ë¥� ���������� +(RewriteRuleê³� +���� RewriteCond +ì§����´ê� �¼ì����� ê²½ì��). �´ê��� �¬ì���� ê·�ì¹� �¸í�¸ì�� +goto 문ì�¼ë� ��ê°��� �� ���µë����. �¤ì�� ���������� +��ì²��� URIê°� �¤ì�� ���¼ì�� �´ë�¹í��ì§� ���� ê²½ì�°ì��ë§� +RewriteRule�� +�¤í����ê³��� �©ë����.

+ +
# Is the request for a non-existent file?
+RewriteCond "%{REQUEST_FILENAME}" !-f
+RewriteCond "%{REQUEST_FILENAME}" !-d
+# If so, skip these two RewriteRules
+RewriteRule ".?"                  "-" [S=2]
+
+RewriteRule "(.*\.gif)"           "images.php?$1"
+RewriteRule "(.*\.html)"          "docs.php?$1"
+ + +

�� 기ì���� RewriteCondê°� +ë°�ë¡� �¤ì���� �¤ë�� +RewriteRule��ë§� +���©ë��ê¸� ��문ì�� ���©í�©ë����. �°ë�¼ì�� +RewriteCondë¥� �¬ë�� +RewriteRule�� ���©í���¤ë©´ ê°��¥í�� 기ì�� ì¤� +������ �´ë�� ì¡°ê±´�� ë¶�����ê³� [Skip] ����ê·¸ë�� ê°�ì§� +RewriteRule�� ì¶�ê°����� ê²�������. +�´ë�� �¬ì�©í���� ���� if-then-else 구조ë¥� ë§��� �� ���µë����: +then ���� ë§�ì§�ë§� ê·�ì¹��� skip=N�� ��ë©�, +N�� else ���� ê·�ì¹� ��������:

+
# Does the file exist?
+RewriteCond "%{REQUEST_FILENAME}" !-f
+RewriteCond "%{REQUEST_FILENAME}" !-d
+# Create an if-then-else construct by skipping 3 lines if we meant to go to the "else" stanza.
+RewriteRule ".?"                  "-" [S=3]
+
+# IF the file exists, then:
+    RewriteRule "(.*\.gif)"  "images.php?$1"
+    RewriteRule "(.*\.html)" "docs.php?$1"
+    # Skip past the "else" stanza.
+    RewriteRule ".?"         "-" [S=1]
+# ELSE...
+    RewriteRule "(.*)"       "404.php?file=$1"
+# END
+ + +

<If>, +<ElseIf> ë°� +<Else> ì§����´ë�� +���� �¬ì�©í��ë©� �´ë�¬í�� ì¢�ë¥��� �¤ì���� �� �½ê� �¬ì�±í�� �� +���µë����.

+ +
top
+
+

T|type

+

ê²°ê³¼ ���µì�� ���¡ë�� MIME ������ �¤ì���©ë����. �´ê��� +AddType ì§����´ì�� +���¼í�� �¨ê³¼ë¥� ê°�ì§�����.

+ +

��ë¥� �¤ì��, �¹ì�� ë°©ì���¼ë� ��ì²��� ê²½ì�� Perl ���� ì½���ë¥� +�¼ë� ���¤í�¸ë� ��ê³µí��ê¸� ���� �¤ì�� 기ì���� �¬ì�©í�� �� +���µë����:

+ +
# .pl ���¼ì�� �¼ë� ���¤í�¸ë� ��ê³�
+RewriteRule "\.pl$"  "-" [T=text/plain]
+ + +

���� ���� ���¥ì�� ���� jpeg �´ë�¸ì�ë¥� ���±í���� ì¹´ë��¼ê� +���� ê²½ì�� ���� �´ë��� 기ì��¼ë� �¬ë�ë¥� MIME �����¼ë� +�´ë�� �´ë�¸ì�ê°� ��ê³µë����ë¡� ê°����� �� ���µë����:

+ +
# �´ë��� 'IMG'ê°� �¬í�¨ë�� ���¼ì�� jpg �´ë�¸ì�������.
+RewriteRule "IMG"  "-" [T=image/jpg]
+ + +

�´ê��� ê°��¨í�� �����´ë©° ���� +<FilesMatch>ë¥� +�¬ì�©í���� �� �� ������ �� ���¤ë�� ���� ������������. +�¬ì���±ì�� ��ì¡´í��ê¸� ���� ���� 문ì���� ���� ���� ��루ì���� +ê³��¤í��������. �¬ì���±ì�� ����ë³´ë�� ���� �� �¨ì�¨ì���� +��루ì���� �©ë����.

+ +

+������리ë� 컨í���¤í�¸ì���� �¬ì�©í���� ê²½ì�� ��ì²� +mod_rewrite ì²�ë¦� �¼ì�´ë���� ���� +ì¹����¼ë� -(����)ë§� �¬ì�©í��������. +ê·¸ë��ì§� ���¼ë©´ �´ë� �¬ì�ë¦�(���� +mod_rewrite ì²�ë¦� �¼ì�´ë�� �¬í��)ë¡� �¸í�� +�� ����ê·¸ë� �¤ì���� MIME ������ ���¤ë�©ë����. +L ����ê·¸ë�� �� 컨í���¤í�¸ì���� +mod_rewrite ì²�리ì�� ���� �¼ì�´ë��ë¥� +ì¢�ë£����� �� ���©í�� �� ���µë����.

+
top
+
+

UnsafeAllow3F

+

���� ì¤��� HTTP ��ì²��� �¸ì��©ë�� 물ì���� '%3f'ê°� ��ê³� + �¬ì���� ê²°ê³¼�� ì¹����� '?'ê°� ���� ê²½ì�� �¬ì���±ì�� ê³�������ë¡� + ���©í���¤ë©´ �� ����ê·¸ë�� �¤ì���´ì�� �©ë����. �´ë�� �¸ì��©ë�� + 물ì������ 캡ì� ë°� �¬ì����� �´ì�©í���� �������� URLë¡�ë¶��� + ë³´í�¸í�©ë����.

+
top
+
+

UnsafePrefixStat

+

��ë²� ë²����� ì¹����� ë³����� ��참조ë¡� ������ê³� ���� ���¤í�� + ê²½ë�ë¡� �´ì������ ê²½ì�� �� ����ê·¸ë�� �¤ì���´ì�� �©ë����. + �´ë�¬í�� ì¹����� 문ì�� 루í�¸ë� �����¬ê� ë¶�ì§� ���µë����. + �´ë�� ���¥ë�� ì¹����� ����ì¹� 못í�� ���� ���¤í�� ��ì¹��� + 매í������ �������� URLë¡�ë¶��� ë³´í�¸í�©ë����.

+ +

Available in Apache HTTP Server 2.5.1 and later.

+
top
+
+

UNC

+

�� ����ê·¸ë�� �¤ì����ë©� Windows UNC ê²½ë����� �¬ì�©ë���� + �¬ë�� ���� �¬ë������ ë³��©ì�� ë°©ì��©ë����. ê·�ì¹��� ì¹����� + �¬ë�� 리í�°ë�� �¬ë����ë¡� �������� ê²½ì�� �� ����ê·¸ë�� + ������ì§� ���µë����.

+ +

Available in Apache HTTP Server 2.5.1 and later.

+
+
+

°¡´ÉÇÑ ¾ð¾î:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/flags.html.tr.utf8 b/docs/manual/rewrite/flags.html.tr.utf8 new file mode 100644 index 0000000000..eddaf9e153 --- /dev/null +++ b/docs/manual/rewrite/flags.html.tr.utf8 @@ -0,0 +1,907 @@ + + + + + +RewriteRule Bayrakları - Apache HTTP Sunucusu Sürüm 2.5 + + + + + + + +
<-
+

RewriteRule Bayrakları

+
+

Mevcut Diller:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ +

Bu belge, RewriteRule +yönergesinde kullanılabilecek bayrakları ayrıntılı açıklamalar ve +örneklerle açıklar.

+
+ +
top
+
+

Giriş

+

Bir RewriteRule +yönergesinin davranışı bir veya daha fazla bayrakla +değiştirilebilir. Bayraklar kuralın sonunda köşeli parantez içinde +belirtilir ve birden fazla bayrak virgülle ayrılır.

+
RewriteRule pattern target [Flag1,Flag2,Flag3]
+ + +

Her bayrağın (birkaç istisna dışında) CO gibi kısa bir +biçimi ve cookie gibi uzun bir biçimi vardır. Kısa biçim +en yaygın olarak kullanılsa da, her bayrağın ne yapması gerektiğini +hatırlamanız için uzun biçime aşina olmanız önerilir. Bazı bayraklar +bir veya daha fazla argüman alır. Bayraklar büyük/küçük harf +duyarsızdır.

+ +

İstekle ilişkili üstveriyi değiştiren bayraklar (T=, H=, E=), bir +değiştirme ('-' dışında) aynı yeniden yazma işleme turunda +gerçekleştirildiğinde dizin başına ve htaccess bağlamında etkili +olmaz.

+ +

Burada mevcut bayrakların her biri, nasıl kullanabileceğinize dair +bir örnekle birlikte sunulmaktadır.

+
top
+
+

B (geri başvuruları kodla)

+

[B] bayrağı, RewriteRule +yönergesine dönüşümü uygulamadan önce alfasayısal olmayan karakterleri +kodlamasını söyler.

+ +

mod_rewrite URL'leri eşlemeden önce kodlarını +çözmek zorundadır, bu nedenle geri başvurular uygulandığında kodları +çözülmüş olur. B bayrağı kullanıldığında, geri başvurulardaki +alfasayısal olmayan karakterler kodlanır. Örneğin, şu kuralı ele +alalım:

+ +

Sunucu değişkenlerinin benzer şekilde kodlanması için + "escape" eşleme işlevine bakın

+ + +
RewriteRule "^search/(.*)$" "/search.php?term=$1"
+ + +

Arama terimi 'x & y/z' olduğunda, tarayıcı bunu +'x%20%26%20y%2Fz' olarak kodlar ve istek 'search/x%20%26%20y%2Fz' +olur. B bayrağı olmadan bu yeniden yazma kuralı 'search.php?term=x +& y/z' ile eşleşir ki bu geçerli bir URL değildir ve +search.php?term=x%20&y%2Fz= olarak kodlanır, bu da +amaçlanan değildir.

+ +

Aynı kuralda B bayrağı ayarlandığında, parametreler çıktı URL'sine +geçirilmeden önce yeniden kodlanır ve doğru bir eşleme olan +/search.php?term=x%20%26%20y%2Fz elde edilir.

+ +
RewriteRule "^search/(.*)$" "/search.php?term=$1" [B,PT]
+ + +

Bu belirli örneğin çalışması için AllowEncodedSlashes yönergesini +On olarak ayarlamanız gerekebileceğini unutmayın; çünkü +httpd URL'lerde kodlanmış eğik çizgilere izin vermez ve bir tane +görürse 404 döndürür.

+ +

Bu kodlama özellikle vekil durumunda gereklidir; arka uç, kodları +çözülmüş bir URL ile karşılaşırsa bozulabilir.

+ +

Bu bayrağa bir alternatif, %{THE_REQUEST} değerine karşı yakalama +yapan bir RewriteCond +kullanmaktır; bu, dizgeleri kodlanmış biçimde yakalar.

+ +

2.4.26 ve sonrasında, geri başvurulardaki kodlamayı belirli +karakterlerle sınırlayabilirsiniz: [B=#?;]. Not: Boşluk +karakteri kodlanacak karakterler listesinde kullanılabilir, ancak +RewriteRule yönergesinin +üçüncü argümanının tamamını tırnak içine almanız ve boşluğun listenin +son karakteri olmaması gerekir.

+ +
# Boşlukları ve soru işaretlerini kodla. Son argüman etrafındaki
+# tırnak işaretleri, boşluk dahil edildiğinde gereklidir.
+RewriteRule "^search/(.*)$" "/search.php?term=$1" "[B= ?]"
+ + +

Bu şekilde kodlanan karakterleri sınırlamak için #flag_bne ve #flag_bctls bayraklarına bakın

+
top
+
+

BNP|backrefnoplus (boşluğu +'ya kodlama)

+

[BNP] bayrağı, RewriteRule +yönergesine geri başvurulardaki boşluk karakterini '+' yerine %20 +olarak kodlamasını söyler. Geri başvuru sorgu dizgesi yerine yol +bileşeninde kullanılacaksa yararlıdır.

+ +
# Form gönderimi yoluyla sorgu dizgesinde kullanılan + yerine yolda
+# boşlukları %20 olarak kodla
+RewriteRule "^search/(.*)$" "/search.php/$1" "[B,BNP]"
+ + + +

Bu bayrak 2.4.26 ve sonraki sürümlerde mevcuttur.

+
top
+
+

BCTLS

+

[BCTLS] bayrağı [B] bayrağına benzer, ancak yalnızca kontrol +karakterlerini ve boşluk karakterini kodlar. Bu, sorgu dizgesine +kodlanmadan kopyalandıklarında reddedilen karakter kümesiyle +aynıdır.

+ +
# Kontrol karakterlerini ve boşlukları kodla
+RewriteRule "^search/(.*)$" "/search.php/$1" "[BCTLS]"
+ + +

Bu bayrak 2.5.1 ve sonraki sürümlerde mevcuttur.

+ +
top
+
+

BNE

+

[BNE=...] içindeki karakter listesi, [B] veya [BCTLS] bayraklarının +karakterlerinden istisna olarak değerlendirilir. Listelenen karakterler +kodlanmayacaktır.

+ +
# Öntanımlı karakterleri kodla, ancak / karakterini bırak
+RewriteRule "^search/(.*)$" "/search.php?term=$1" "[B,BNE=/]"
+ + +

Bu bayrak 2.5.1 ve sonraki sürümlerde mevcuttur.

+
top
+
+

C|chain

+

[C] veya [chain] bayrağı, RewriteRule yönergesinin bir sonraki +kurala zincirleneceğini belirtir. Yani, kural eşleşirse her zamanki +gibi işlenir ve denetim bir sonraki kurala geçer. Ancak eşleşmezse bir +sonraki kural ve birlikte zincirlenen diğer kurallar atlanır.

+ +
top
+
+

CO|cookie

+

[CO] veya [cookie] bayrağı, belirli bir RewriteRule eşleştiğinde bir çerez +ayarlamanıza olanak tanır. Argüman üç zorunlu ve beş isteğe bağlı +alandan oluşur.

+ +

Bayrağın tüm öznitelikler dahil tam sözdizimi şöyledir:

+ +

+[CO=NAME:VALUE:DOMAIN:lifetime:path:secure:httponly:samesite] +

+ +

Çerez alanlarından herhangi birinde birebir ':' karakterine ihtiyaç +duyulursa, alternatif bir sözdizimi mevcuttur. Alternatif sözdizimini +etkinleştirmek için çerez "Name" alanının önüne ';' karakteri +konulmalı ve alan ayırıcıları ';' olarak belirtilmelidir.

+ +

+[CO=;NAME;VALUE:MOREVALUE;DOMAIN;lifetime;path;secure;httponly;samesite] +

+ +

Çerezin ayarlanması için bir ad, bir değer ve bir alan adı +bildirmelisiniz.

+ +
+
Alan Adı (Domain)
+
Çerezin geçerli olmasını istediğiniz alan adı. Bu, +www.example.com gibi bir konak adı veya +.example.com gibi bir alan adı olabilir. En az iki +parçadan oluşmalı ve bir nokta ile ayrılmalıdır. Yani yalnızca +.com veya .net olamaz. Bu tür çerezler +çerez güvenlik modeli tarafından yasaklanmıştır.
+
+ +

İsteğe bağlı olarak aşağıdaki değerleri de ayarlayabilirsiniz:

+ +
+
Ömür (Lifetime)
+
Çerezin kalıcı olacağı süre, dakika cinsinden.
+
0 değeri, çerezin yalnızca geçerli tarayıcı oturumu süresince +kalıcı olacağını belirtir. Hiçbir değer belirtilmezse bu öntanımlı +değerdir.
+
Negatif bir değer, çerezin tarayıcıda silinmesine neden olur.
+ +
Yol (Path)
+
Geçerli web sitesinde çerezin geçerli olduğu yol; +/customers/ veya /files/download/ gibi.
+
Öntanımlı olarak / olarak ayarlanır - yani web +sitesinin tamamı.
+ +
Güvenli (Secure)
+
secure, true veya 1 olarak +ayarlanırsa, çerez yalnızca güvenli (https) bağlantılar üzerinden +aktarılabilir.
+ +
httponly
+
HttpOnly, true veya 1 +olarak ayarlanırsa, çerez HttpOnly bayrağıyla +ayarlanır; bu, çerezin bu özelliği destekleyen tarayıcılarda +JavaScript koduna erişilemez olduğu anlamına gelir.
+ +
samesite
+
false veya 0 dışında bir değere +ayarlanırsa, SameSite özniteliği belirtilen değere +ayarlanır. Tipik değerler None, Lax ve +Strict'tir. 2.5.1 ve sonrasında mevcuttur.
+
+ + +

Şu örneği ele alalım:

+ +
RewriteEngine On
+RewriteRule   "^/index\.html"   "-" [CO=frontdoor:yes:.example.com:1440:/]
+ + +

Verilen örnekte, kural isteği yeniden yazmaz. "-" yeniden yazma +hedefi, mod_rewrite modülüne isteği değiştirmeden +geçirmesini söyler. Bunun yerine, 'frontdoor' adlı bir çerezi 'yes' +değeriyle ayarlar. Çerez .example.com alan adındaki +herhangi bir konak için geçerlidir. 1440 dakika (24 saat) sonra sona +erecek şekilde ayarlanır ve tüm URI'ler için döndürülür.

+ +
top
+
+

DPI|discardpath

+

DPI bayrağı, yeniden yazılmış URI'nin PATH_INFO bölümünün +atılmasına neden olur.

+

Bu bayrak 2.2.12 ve sonraki sürümlerde mevcuttur.

+

Dizin başına bağlamda, her RewriteRule +yönergesinin karşılaştırdığı URI, URI'nin ve PATH_INFO'nun geçerli +değerlerinin birleşimidir.

+ +

Geçerli URI, istemcinin istediği ilk URI, önceki bir +mod_rewrite işleme turunun sonucu veya geçerli +mod_rewrite işleme turundaki önceki bir kuralın +sonucu olabilir.

+ +

Buna karşılık, her kuraldan önce URI'ye eklenen PATH_INFO yalnızca +bu mod_rewrite işleme turundan önceki PATH_INFO +değerini yansıtır. Sonuç olarak, URI'nin büyük bölümleri birden fazla +RewriteRule yönergesinde bir değiştirmeye +eşlenip kopyalanırsa ve URI'nin hangi bölümlerinin geçerli +PATH_INFO'dan geldiğine dikkat edilmezse, son URI'ye PATH_INFO'nun +birden fazla kopyası eklenebilir.

+ +

Bu bayrağı, önceki dosya sistemi eşlemesinden kaynaklanan +PATH_INFO'nun ilgilendirmediği herhangi bir değiştirmede kullanın. Bu +bayrak, bu mod_rewrite işleme turu başlamadan önce +oluşturulan PATH_INFO'yu kalıcı olarak unutur. PATH_INFO, geçerli +mod_rewrite işleme turu tamamlanana kadar yeniden +hesaplanmaz. Bu tur boyunca sonraki kurallar, yalnızca değiştirmelerin +doğrudan sonucunu görür; eklenmiş bir PATH_INFO olmaz.

+
top
+
+

E|env

+

[E] veya [env] bayrağıyla bir ortam değişkeninin değerini +ayarlayabilirsiniz. Bazı ortam değişkenlerinin kural çalıştıktan sonra +ayarlanabileceğini ve böylece ayarladığınız değeri geçersiz +kılabileceğini unutmayın. Ortam değişkenlerinin nasıl çalıştığı +hakkında daha fazla ayrıntı için Ortam +Değişkenleri belgesine bakın.

+ +

Bu bayrağın tam sözdizimi şöyledir:

+ +
[E=VAR:VAL]
+[E=!VAR]
+ + +

VAL, genişletilen geri başvurular ($N +veya %N) içerebilir.

+ +

Kısa biçimi kullanarak

+ +

+[E=VAR] +

+ +

VAR adlı ortam değişkenini boş bir değere +ayarlayabilirsiniz.

+ +

Şu biçim

+ +

+[E=!VAR] +

+ +

daha önce ayarlanmış VAR adlı ortam değişkeninin +silinmesine olanak tanır.

+ +

Ortam değişkenleri daha sonra CGI programları, diğer RewriteRule +yönergeleri veya CustomLog yönergeleri dahil olmak üzere çeşitli +bağlamlarda kullanılabilir.

+ +

Aşağıdaki örnek, istenen URI bir resim dosyasıysa 'image' adlı bir +ortam değişkenini '1' değerine ayarlar. Daha sonra bu ortam değişkeni, +bu istekleri erişim günlüğünden dışlamak için kullanılır.

+ +
RewriteRule "\.(png|gif|jpg)$"   "-" [E=image:1]
+CustomLog   "logs/access_log"    combined env=!image
+ + +

Aynı etkinin SetEnvIf +kullanılarak elde edilebileceğini unutmayın. Bu teknik bir öneri olarak +değil, bir örnek olarak sunulmuştur.

+
top
+
+

END

+

[END] bayrağı kullanmak, yalnızca geçerli yeniden yazma işleme +turunu durdurmakla kalmaz ([L] gibi), aynı zamanda dizin başına +(htaccess) bağlamda sonraki yeniden yazma işlemlerinin de +gerçekleşmesini engeller.

+ +

Bu, harici yönlendirmelerden kaynaklanan yeni istekler için +geçerli değildir.

+
top
+
+

F|forbidden

+

[F] bayrağı kullanmak, sunucunun istemciye 403 Yasak durum kodu +döndürmesine neden olur. Aynı davranış Deny yönergesiyle de +gerçekleştirilebilir ancak bu, Yasak durumu atamada daha fazla esneklik +sağlar.

+ +

Aşağıdaki kural, .exe dosyalarının sunucunuzdan +indirilmesini yasaklar.

+ +
RewriteRule "\.exe"   "-" [F]
+ + +

Bu örnek, yeniden yazma hedefi için "-" sözdizimini kullanır; bu, +istenen URI'nin değiştirilmediği anlamına gelir. İsteği yasaklayacaksanız +başka bir URI'ye yeniden yazmanın bir nedeni yoktur.

+ +

[F] kullanıldığında, [L] zımnen uygulanır - yani yanıt hemen +döndürülür ve başka kural değerlendirilmez.

+ +
top
+
+

G|gone

+

[G] bayrağı, sunucuyu yanıtla birlikte 410 Kalktı durum kodu +döndürmeye zorlar. Bu, bir kaynağın eskiden mevcut olduğunu ancak +artık mevcut olmadığını belirtir.

+ +

[F] bayrağında olduğu gibi, [G] bayrağını kullanırken genellikle +yeniden yazma hedefi için "-" sözdizimini kullanırsınız:

+ +
RewriteRule "oldproduct"   "-" [G,NC]
+ + +

[G] kullanıldığında, [L] zımnen uygulanır - yani yanıt hemen +döndürülür ve başka kural değerlendirilmez.

+ +
top
+
+

H|handler

+

Elde edilen isteğin belirtilen işleyici ile işlenmesini zorlar. +Örneğin, dosya uzantısı olmayan tüm dosyaların php işleyicisi +tarafından çözümlenmesini zorlamak için kullanılabilir:

+ +
RewriteRule "!\."  "-" [H=application/x-httpd-php]
+ + +

+Yukarıdaki düzenli ifade - !\. - birebir . +karakterini içermeyen herhangi bir istekle eşleşir. +

+ +

Bu, bazı koşullara dayalı olarak işleyiciyi zorlamak için de +kullanılabilir. Örneğin, sunucu bağlamında kullanılan aşağıdaki +kod parçası, .phps uzantısıyla istendiğinde +.php dosyalarının mod_php tarafından +görüntülenmesini sağlar:

+ +
RewriteRule "^(/source/.+\.php)s$" "$1" [H=application/x-httpd-php-source]
+ + +

Yukarıdaki düzenli ifade - ^(/source/.+\.php)s$ - +/source/ ile başlayan, ardından 1 veya n karakter gelen +ve birebir .phps ile biten herhangi bir istekle eşleşir. +$1 geri başvurusu, düzenli ifadenin parantez içindeki yakalanan +eşleşmeye referans verir.

+
top
+
+

L|last

+

[L] bayrağı, mod_rewrite modülünün kural kümesini +işlemeyi durdurmasına neden olur. Çoğu bağlamda, kural eşleşirse başka +kural işlenmeyeceği anlamına gelir. Bu, Perl'deki last +komutuna veya C'deki break komutuna karşılık gelir. Bu +bayrağı, geçerli kuralın diğer kurallar dikkate alınmadan hemen +uygulanması gerektiğini belirtmek için kullanın.

+ +

RewriteRule yönergesini +.htaccess dosyalarında veya <Directory> bölümlerinde kullanıyorsanız, +kuralların nasıl işlendiğini anlamanız önemlidir. Bunun basitleştirilmiş +biçimi, kurallar işlendikten sonra yeniden yazılmış isteğin URL +çözümleme motoruna geri verildiğidir. Yeniden yazılmış istek +işlenirken .htaccess dosyası veya <Directory> bölümüyle tekrar karşılaşılması +ve kural kümesinin baştan çalıştırılması mümkündür. En yaygın olarak +bu, kurallardan birinin dahili veya harici bir yönlendirmeye neden +olması durumunda olur ve istek sürecinin yeniden başlamasına yol +açar.

+ +

Bu nedenle, RewriteRule +yönergelerini bu bağlamlardan birinde kullanıyorsanız, kuralların +döngüye girmesinden kaçınmak için açık adımlar atmanız ve bir dizi +kuralın yürütülmesini sonlandırmak için yalnızca [L] bayrağına +güvenmemeniz önemlidir; aşağıda gösterildiği gibi.

+ +

Alternatif bir bayrak olan [END], yalnızca geçerli yeniden yazma +işleme turunu sonlandırmak için değil, aynı zamanda dizin başına +(htaccess) bağlamda sonraki yeniden yazma işlemlerinin de +gerçekleşmesini engellemek için kullanılabilir. Bu, harici +yönlendirmelerden kaynaklanan yeni istekler için geçerli değildir.

+ +

Burada verilen örnek, herhangi bir isteği index.php'ye +yeniden yazar ve orijinal isteği index.php'ye sorgu +dizgesi argümanı olarak verir; ancak RewriteCond, istek zaten +index.php için ise RewriteRule yönergesinin +atlanmasını sağlar.

+ +
RewriteBase "/"
+RewriteCond "%{REQUEST_URI}" !=/index.php
+RewriteRule "^(.*)"          "/index.php?req=$1" [L,PT]
+ +
top
+
+

N|next

+

+[N] bayrağı, kural kümesinin şimdiye kadarki sonucu başlangıç noktası +olarak kullanarak en baştan yeniden başlamasına neden olur. Döngüye +neden olabileceğinden son derece dikkatli kullanın. +

+

+[Next] bayrağı, örneğin bir istekteki belirli bir dizgeyi veya harfi +tekrar tekrar değiştirmek istediğinizde kullanılabilir. Burada +gösterilen örnek, bir istekteki her yerde A'yı B ile değiştirecek ve +değiştirilecek A kalmayana kadar bunu yapmaya devam edecektir. +

+
RewriteRule "(.*)A(.*)" "$1B$2" [N]
+ +

Bunu bir while döngüsü olarak düşünebilirsiniz: Bu +kalıp hâlâ eşleştiği sürece (yani URI hâlâ bir A +içerdiği sürece), bu değiştirmeyi yap (yani A'yı +B ile değiştir).

+ +

2.5.0 ve sonrasında, bu modül istenmeyen döngülere karşı koruma +sağlamak için 10.000 yinelemeden sonra hata döndürür. N bayrağına +eklenerek alternatif bir maksimum yineleme sayısı belirtilebilir.

+
# Döngünün her geçişinde 1 karakter değiştirmeye razı ol
+RewriteRule "(.+)[><;]$" "$1" [N=32000]
+# ... veya 10 döngüden sonra vazgeç
+RewriteRule "(.+)[><;]$" "$1" [N=10]
+ + +
top
+
+

NC|nocase

+

[NC] bayrağının kullanımı, RewriteRule yönergesinin büyük/küçük +harf duyarsız biçimde eşleştirilmesine neden olur. Yani eşleşen +URI'de harflerin büyük veya küçük harf olarak görünüp görünmediği +önemli değildir.

+ +

Aşağıdaki örnekte, herhangi bir resim dosyası isteği özel resim +sunucunuza vekil olarak iletilir. Eşleşme büyük/küçük harf +duyarsızdır; bu nedenle örneğin hem .jpg hem de +.JPG dosyaları kabul edilir.

+ +
RewriteRule "(.*\.(jpg|gif|png))$" "http://images.example.com$1" [P,NC]
+ +
top
+
+

NE|noescape

+

Öntanımlı olarak, bir RewriteRule harici yönlendirmeyle +sonuçlandığında, çıktıda aşağıdaki güvenli küme dışında kalan +karakterler onaltılık kod (yüzde kodlu) eşdeğerlerine +dönüştürülür:

+ +
    +
  • Alfasayısal karakterler: A-Z, a-z, + 0-9
  • +
  • Özel karakterler: $-_.+!*'(),:;@&=/~
  • +
+ +

Örneğin, # karakteri %23'e ve +? karakteri %3F'e dönüştürülür. +% karakteri de kodlanır (%25'e), bu da +değiştirmede zaten mevcut olan yüzde kodlamanın çift kodlanacağı +anlamına gelir.

+ +

[NE] bayrağı kullanmak bu kodlamayı engeller ve # ile +? gibi karakterlerin yönlendirme URL'sine +değiştirilmeden geçmesine olanak tanır.

+ +
RewriteRule "^/anchor/(.+)" "/bigpage.html#$1" [NE,R]
+ + +

+Yukarıdaki örnek /anchor/xyz adresini +/bigpage.html#xyz adresine yönlendirecektir. [NE] +kullanılmazsa # karakteri onaltılık kod eşdeğeri olan +%23'e dönüştürülür ve bu da 404 Bulunamadı hata durumuna +yol açar. +

+ +
top
+
+

NS|nosubreq

+

[NS] bayrağının kullanımı, kuralın alt isteklerde kullanılmasını +engeller. Örneğin, SSI (Sunucu Tarafı Dahil Etme) kullanılarak dahil +edilen bir sayfa bir alt istektir ve bu alt isteklerde yeniden +yazmaların gerçekleşmesini engellemek isteyebilirsiniz. Ayrıca, +mod_dir olası dizin öntanımlı dosyaları (örneğin +index.html dosyaları) hakkında bilgi edinmeye +çalıştığında, bu bir dahili alt istektir ve genellikle bu tür alt +isteklerde yeniden yazmaları engellemek istersiniz. Alt isteklerde, +kuralların tamamının uygulanması her zaman yararlı olmaz ve hatalara +bile neden olabilir. Sorunlu kuralları dışlamak için bu bayrağı +kullanın.

+ +

Bu kuralı kullanıp kullanmamaya karar vermek için: URL'leri CGI +betikleriyle ön ekliyorsanız ve bunların CGI betiği tarafından +işlenmesini zorluyorsanız, alt isteklerde sorunlarla (veya önemli ek +yükle) karşılaşmanız olasıdır. Bu durumlarda bu bayrağı kullanın.

+ +

+Bir HTML sayfasının parçası olarak yüklenen resimler, javascript +dosyaları veya css dosyaları alt istek değildir - tarayıcı bunları +ayrı HTTP istekleri olarak ister. +

+
top
+
+

P|proxy

+

[P] bayrağının kullanımı, isteğin mod_proxy +tarafından işlenmesine ve bir vekil isteği üzerinden ele alınmasına +neden olur. Örneğin, tüm resim isteklerinin bir arka uç resim +sunucusu tarafından işlenmesini istiyorsanız, şöyle bir şey +yapabilirsiniz:

+ +
RewriteRule "/(.*)\.(jpg|gif|png)$" "http://images.example.com/$1.$2" [P]
+ + +

[P] bayrağının kullanımı [L] anlamına gelir - yani istek hemen +vekil üzerinden iletilir ve sonraki kurallar dikkate alınmaz.

+ +

+Değiştirme dizgesinin mod_proxy tarafından +işlenebilecek geçerli bir URI olduğundan (genellikle +http://konakadı ile başlayan) emin olmalısınız. +Değilse, vekil modülünden bir hata alırsınız. Bu bayrağı, uzak +içeriği yerel sunucunun ad alanına eşlemek için ProxyPass yönergesinin daha güçlü +bir uygulamasını gerçekleştirmek için kullanın.

+ +
+

Güvenlik Uyarısı

+

Kuralın hedef URL'sini oluştururken, istemcinin sunucunuzun vekil +olarak davranacağı URL kümesi üzerindeki etkisinin güvenlik +sonuçlarını dikkate alın. URL'nin şema ve konak adı bölümünün ya sabit +olduğundan ya da istemciye gereksiz etki izni vermediğinden emin +olun.

+
+ +
+

Performans uyarısı

+

Bu bayrağı kullanmak, kalıcı bağlantıları yönetmeyen öntanımlı +işçi bu durumda kullanıldığından bağlantı havuzlama/yeniden kullanımı +olmaksızın mod_proxy kullanımını tetikler.

+

Kalıcı bağlantıları kullanmak için en azından hedef URL'nin şema +ve konak bölümü için örneğin bir zaman aşımı ayarladığınız +ProxySet yönergesi içeren +bir Proxy bloğu +kurmalısınız.

+

ProxyPass veya +ProxyPassMatch ile +kurarsanız kalıcı bağlantılar otomatik olarak kullanılacaktır.

+
+ +

Not: Bu bayrağı kullanmak için mod_proxy +etkinleştirilmiş olmalıdır.

+ +
top
+
+

PT|passthrough

+ +

+Bir RewriteRule'daki hedef (veya değiştirme dizgesi) öntanımlı olarak +bir dosya yolu olarak kabul edilir. [PT] bayrağının kullanılması, +bunun yerine bir URI olarak işlenmesine neden olur. Yani, [PT] +bayrağının kullanılması, RewriteRule sonucunun, Alias, Redirect veya ScriptAlias gibi konum tabanlı +eşlemelerin etki edebilmesi için URL eşlemesine geri iletilmesine +neden olur. +

+ +

+Örneğin, /icons için bir Alias tanımınız varsa ve oraya +işaret eden bir RewriteRule varsa, Alias yönergesinin +değerlendirilmesini sağlamak için [PT] bayrağını kullanmalısınız. +

+ +
Alias "/icons" "/usr/local/apache/icons"
+RewriteRule "/pics/(.+)\.jpg$" "/icons/$1.gif" [PT]
+ + +

+Bu durumda [PT] bayrağının atlanması, Alias'ın yok sayılmasına neden +olur ve 'Dosya bulunamadı' hatası döndürülür. +

+ +

PT bayrağı L bayrağını ima eder: +isteği bir sonraki işleme aşamasına geçirmek için yeniden yazma +durdurulur.

+ +

PT bayrağının <Directory> bölümleri veya +.htaccess dosyaları gibi dizin başına bağlamlarda +zımnen uygulandığını unutmayın. Bundan kaçınmanın tek yolu +-'ye yeniden yazmaktır.

+ +
top
+
+

QSA|qsappend

+

+Değiştirme URI'si bir sorgu dizgesi içerdiğinde, RewriteRule yönergesinin öntanımlı +davranışı mevcut sorgu dizgesini atıp yeni oluşturulanla +değiştirmektir. [QSA] bayrağı kullanmak sorgu dizgelerinin +birleştirilmesine neden olur. +

+ +

Şu kuralı ele alalım:

+ +
RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]
+ + +

[QSA] bayrağıyla, /pages/123?one=two isteği +/page.php?page=123&one=two ile eşlenir. [QSA] +bayrağı olmadan, aynı istek +/page.php?page=123 ile eşlenir - yani mevcut sorgu +dizgesi atılır. +

+
top
+
+

QSD|qsdiscard

+

+İstenen URI bir sorgu dizgesi içerdiğinde ve hedef URI içermediğinde, +RewriteRule yönergesinin +öntanımlı davranışı o sorgu dizgesini hedef URI'ye kopyalamaktır. +[QSD] bayrağı kullanmak sorgu dizgesinin atılmasına neden olur. +

+ +

Bu bayrak 2.4.0 ve sonraki sürümlerde mevcuttur.

+ +

+[QSD] ve [QSA] birlikte kullanıldığında [QSD] öncelikli olur. +

+ +

+Hedef URI bir sorgu dizgesine sahipse, öntanımlı davranış +gözlemlenir - yani orijinal sorgu dizgesi atılır ve +RewriteRule hedef URI'sindeki sorgu dizgesiyle +değiştirilir. +

+ +
top
+
+

QSL|qslast

+

+Öntanımlı olarak, değiştirmedeki ilk (en soldaki) soru işareti yolu +sorgu dizgesinden ayırır. [QSL] bayrağı kullanmak, RewriteRule yönergesine iki bileşeni +son (en sağdaki) soru işaretini kullanarak ayırmasını söyler.

+ +

+Bu, dosya adlarında birebir soru işaretleri bulunan dosyalara eşleme +yaparken yararlıdır. Değiştirmede sorgu dizgesi kullanılmıyorsa, bu +bayrakla birlikte sonuna bir soru işareti eklenebilir.

+ +

Bu bayrak 2.4.19 ve sonraki sürümlerde mevcuttur.

+ +
top
+
+

R|redirect

+

+[R] bayrağı kullanmak, tarayıcıya bir HTTP yönlendirmesi +verilmesine neden olur. Tam nitelikli bir URL belirtilmişse (yani +http://sunucuadı/ dahil), o konuma bir yönlendirme +verilir. Aksi takdirde, yönlendirmeyle gönderilen URL'yi oluşturmak +için geçerli protokol, sunucu adı ve bağlantı noktası numarası +kullanılır. +

+ +

+[R=305] sözdizimi kullanılarak geçerli herhangi bir HTTP yanıt durum +kodu belirtilebilir; hiçbiri belirtilmezse öntanımlı olarak 302 durum +kodu kullanılır. Belirtilen durum kodunun mutlaka bir yönlendirme +(3xx) durum kodu olması gerekmez. Ancak durum kodu yönlendirme +aralığının (300-399) dışındaysa değiştirme dizgesi tamamen atılır ve +L kullanılmış gibi yeniden yazma durdurulur.

+ +

Yanıt durum kodlarına ek olarak, yönlendirme durumunu sembolik +adlarıyla da belirtebilirsiniz: temp (öntanımlı), +permanent veya seeother.

+ +

+[R] bayrağını neredeyse her zaman [L] ile birlikte kullanmak +istersiniz (yani [R,L] kullanın); çünkü [R] bayrağı tek başına +URI'nin önüne http://bukonak[:buport] ekler ancak bunu +kural kümesindeki bir sonraki kurala geçirir ve bu da çoğu zaman +'İstekte Geçersiz URI' uyarılarına neden olabilir. +

+ +

Not: httpd yalnızca HTTP belirtiminde bulunan durum kodlarını +destekler. Tanınmayan bir durum kodu kullanmak 500 hatasına ve hata +günlüğü mesajına neden olacaktır.

+ +
top
+
+

S|skip

+

[S] bayrağı, çalıştırmak istemediğiniz kuralları atlamak için +kullanılır. Atlama bayrağının sözdizimi [S=N]'dir; burada +N atlanacak kural sayısını belirtir (RewriteRule ve ondan önceki +RewriteCond yönergeleri +eşleştiği takdirde). Bu, yeniden yazma kural kümenizde bir +goto deyimi olarak düşünülebilir. Aşağıdaki örnekte, +RewriteRule yönergesini +yalnızca istenen URI gerçek bir dosyaya karşılık gelmiyorsa +çalıştırmak istiyoruz.

+ +
# İstek var olmayan bir dosya için mi?
+RewriteCond "%{REQUEST_FILENAME}" !-f
+RewriteCond "%{REQUEST_FILENAME}" !-d
+# Öyleyse, bu iki RewriteRule'u atla
+RewriteRule ".?"                  "-" [S=2]
+
+RewriteRule "(.*\.gif)"           "images.php?$1"
+RewriteRule "(.*\.html)"          "docs.php?$1"
+ + +

Bu teknik yararlıdır; çünkü bir RewriteCond yalnızca hemen ardından +gelen RewriteRule için +geçerlidir. Bu nedenle, bir RewriteCond'un birkaç +RewriteRule için geçerli olmasını istiyorsanız, olası +bir teknik bu koşulları olumsuzlamak ve [Skip] bayrağıyla bir +RewriteRule eklemektir. Bunu, sözde if-then-else +yapıları oluşturmak için kullanabilirsiniz: then yan tümcesinin son +kuralı skip=N olur; burada N, else yan tümcesindeki +kural sayısıdır:

+
# Dosya var mı?
+RewriteCond "%{REQUEST_FILENAME}" !-f
+RewriteCond "%{REQUEST_FILENAME}" !-d
+# "else" kısmına gitmek istiyorsak 3 satır atlayarak bir if-then-else yapısı oluştur.
+RewriteRule ".?"                  "-" [S=3]
+
+# EĞER dosya varsa:
+    RewriteRule "(.*\.gif)"  "images.php?$1"
+    RewriteRule "(.*\.html)" "docs.php?$1"
+    # "else" kısmını atla.
+    RewriteRule ".?"         "-" [S=1]
+# DEĞİLSE...
+    RewriteRule "(.*)"       "404.php?file=$1"
+# SON
+ + +

Bu tür yapılandırmayı, bunun yerine <If>, <ElseIf> ve <Else> yönergelerini kullanarak +gerçekleştirmek muhtemelen daha kolaydır.

+ +
top
+
+

T|type

+

Elde edilen yanıtın gönderileceği MIME türünü ayarlar. Bu, +AddType yönergesiyle aynı +etkiye sahiptir.

+ +

Örneğin, Perl kaynak kodunu belirli bir şekilde istendiğinde düz +metin olarak sunmak için aşağıdaki tekniği kullanabilirsiniz:

+ +
# .pl dosyalarını düz metin olarak sun
+RewriteRule "\.pl$"  "-" [T=text/plain]
+ + +

Veya dosya uzantısı olmayan jpeg resimleri üreten bir kameranız +varsa, bu resimlerin dosya adlarına bakarak doğru MIME türüyle +sunulmasını zorlayabilirsiniz:

+ +
# Adında 'IMG' bulunan dosyalar jpg resimlerdir.
+RewriteRule "IMG"  "-" [T=image/jpg]
+ + +

Bunun önemsiz bir örnek olduğunu ve bunun yerine <FilesMatch> kullanılarak +daha iyi yapılabileceğini lütfen unutmayın. Yeniden yazmaya +başvurmadan önce her zaman bir soruna alternatif çözümleri +düşünün; yeniden yazma her zaman alternatiflerden daha az verimli +bir çözüm olacaktır.

+ +

+Dizin başına bağlamda kullanılıyorsa, mod_rewrite +işlemesinin tüm turu boyunca değiştirme olarak yalnızca +- (tire) kullanın; aksi takdirde dahili yeniden +işleme (sonraki mod_rewrite işleme turları dahil) +nedeniyle bu bayrakla ayarlanan MIME türü kaybolur. +L bayrağı bu bağlamda mod_rewrite +işlemesinin geçerli turunu sonlandırmak için yararlı +olabilir.

+
top
+
+

UnsafeAllow3F

+

Yazılmakta olan HTTP isteğinde kodlanmış bir soru işareti + '%3f' varsa ve yeniden yazılmış sonucun değiştirmesinde '?' varsa, + yeniden yazmanın devam etmesine izin vermek için bu bayrağın + ayarlanması gereklidir. Bu, kodlanmış soru işaretinin yakalanması + ve yeniden değiştirilmesinden yararlanan kötü niyetli bir URL'ye + karşı koruma sağlar.

+
top
+
+

UnsafePrefixStat

+

Sunucu kapsamlı değiştirmeler bir değişken veya geri başvuru + ile başlayıp bir dosya sistemi yoluna çözümlendiğinde bu bayrağın + ayarlanması gereklidir. Bu değiştirmeler belge kökü ile + öneklenmez. Bu, genişletilmiş değiştirmenin beklenmeyen bir dosya + sistemi konumuna eşlenmesine neden olan kötü niyetli bir URL'ye + karşı koruma sağlar.

+ +

Available in Apache HTTP Server 2.5.1 and later.

+
top
+
+

UNC

+

Bu bayrağın ayarlanması, Windows UNC yollarında kullanıldığı + gibi birden fazla baştaki eğik çizginin birleştirilmesini engeller. + Kural değiştirmesi birden fazla birebir eğik çizgi ile + başladığında bayrak gerekli değildir.

+ +

Available in Apache HTTP Server 2.5.1 and later.

+
+
+

Mevcut Diller:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/flags.html.zh-cn.utf8 b/docs/manual/rewrite/flags.html.zh-cn.utf8 new file mode 100644 index 0000000000..daed3b4c01 --- /dev/null +++ b/docs/manual/rewrite/flags.html.zh-cn.utf8 @@ -0,0 +1,806 @@ + + + + + +RewriteRule 标志 - Apache HTTP 服务器 版本 2.5 + + + + + + + +
<-
+

RewriteRule 标志

+
+

可用语言:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ +

本文档讨论了 RewriteRule +指令可用的标志,并提供了详细的说明和示例。

+
+ +
top
+
+

介绍

+

RewriteRule +的行为可以通过一个或多个标志来修改。标志包含在规则末尾的方括号中, +多个标志之间用逗号分隔。

+
RewriteRule pattern target [Flag1,Flag2,Flag3]
+ + +

每个标志(除少数例外)都有一个缩写形式,如 CO, +以及一个较长的形式,如 cookie。虽然最常用的是缩写形式, +但建议你熟悉长形式,以便记住每个标志的作用。 +某些标志接受一个或多个参数。标志不区分大小写。

+ +

修改与请求关联的元数据的标志(T=、H=、E=)在目录级和 htaccess +上下文中,当在同一轮重写处理中执行了替换(非 '-')时不会生效。 +

+ +

下面逐一介绍每个可用的标志,并给出使用示例。

+
top
+
+

B(转义反向引用)

+

[B] 标志指示 RewriteRule +在应用转换之前转义非字母数字字符。

+ +

mod_rewrite 在映射 URL 之前必须对其进行反转义, +因此反向引用在应用时是未转义的。使用 B 标志,反向引用中的非字母数字字符将被转义。 +例如,考虑以下规则:

+ +

有关类似的服务器变量转义,请参阅 + "escape" 映射函数

+ + +
RewriteRule "^search/(.*)$" "/search.php?term=$1"
+ + +

给定搜索词 'x & y/z',浏览器会将其编码为 +'x%20%26%20y%2Fz',发出请求 'search/x%20%26%20y%2Fz'。不使用 B +标志时,此重写规则将映射为 'search.php?term=x & y/z', +这不是一个有效的 URL,因此会被编码为 +search.php?term=x%20&y%2Fz=,这不是预期的结果。

+ +

在同一规则上设置 B 标志后,参数会在传递到输出 URL 之前重新编码, +从而正确映射到 +/search.php?term=x%20%26%20y%2Fz。

+ +
RewriteRule "^search/(.*)$" "/search.php?term=$1" [B,PT]
+ + +

请注意,你可能还需要将 AllowEncodedSlashes 设置为 On +才能使此特定示例正常工作,因为 httpd 不允许 URL 中包含编码的斜杠, +如果发现编码斜杠则返回 404。

+ +

在代理场景中,这种转义尤其必要, +因为后端如果收到未转义的 URL 可能会出错。

+ +

此标志的替代方案是使用 RewriteCond 对 %{THE_REQUEST} 进行捕获, +这将以编码形式捕获字符串。

+ +

在 2.4.26 及更高版本中,你可以通过列出字符来限制反向引用中要转义的特定字符: +[B=#?;]。注意:空格字符可以包含在要转义的字符列表中, +但你必须引用 RewriteRule +的整个第三个参数,并且空格不能是列表中的最后一个字符。

+ +
# 转义空格和问号。最后一个参数周围的引号
+# 在包含空格时是必需的。
+RewriteRule "^search/(.*)$" "/search.php?term=$1" "[B= ?]"
+ + +

要限制以这种方式转义的字符,请参阅 #flag_bne + 和 #flag_bctls

+
top
+
+

BNP|backrefnoplus(不将空格转义为 +)

+

[BNP] 标志指示 RewriteRule 将反向引用中的空格字符 +转义为 %20 而不是 '+'。当反向引用将用于路径部分而不是查询字符串时很有用。

+ +
# 在路径中将空格转义为 %20,而不是表单提交中通过
+# 查询字符串使用的 +
+RewriteRule "^search/(.*)$" "/search.php/$1" "[B,BNP]"
+ + + +

此标志在 2.4.26 及更高版本中可用。

+
top
+
+

BCTLS

+

[BCTLS] 标志类似于 [B] 标志,但只转义控制字符和空格字符。 +这与未编码复制到查询字符串时被拒绝的字符集相同。 +

+ +
# 转义控制字符和空格
+RewriteRule "^search/(.*)$" "/search.php/$1" "[BCTLS]"
+ + +

此标志在 2.5.1 及更高版本中可用。

+ +
top
+
+

BNE

+

[BNE=...] 中的字符列表被视为 [B] 或 [BCTLS] 标志的排除项。 +列出的字符将不会被转义。 +

+ +
# 转义默认字符,但保留 /
+RewriteRule "^search/(.*)$" "/search.php?term=$1" "[B,BNE=/]"
+ + +

此标志在 2.5.1 及更高版本中可用。

+
top
+
+

C|chain

+

[C] 或 [chain] 标志表示该 RewriteRule +与下一条规则链接在一起。也就是说,如果该规则匹配,则照常处理, +控制继续传递到下一条规则。但如果不匹配, +则跳过下一条规则以及所有链接在一起的其他规则。

+ +
top
+
+

CO|cookie

+

[CO] 或 [cookie] 标志允许你在特定的 +RewriteRule +匹配时设置 cookie。参数由三个必需字段和五个可选字段组成。

+ +

该标志的完整语法(包括所有属性)如下:

+ +

+[CO=NAME:VALUE:DOMAIN:lifetime:path:secure:httponly:samesite] +

+ +

如果任何 cookie 字段中需要使用字面量 ':' 字符, +可以使用替代语法。要选择替代语法,cookie 的 "Name" +前应加 ';' 字符,字段分隔符也应指定为 ';'。

+ +

+[CO=;NAME;VALUE:MOREVALUE;DOMAIN;lifetime;path;secure;httponly;samesite] +

+ +

你必须声明 cookie 的名称、值和域才能设置 cookie。

+ +
+
Domain
+
你希望 cookie 有效的域。这可以是主机名, +如 www.example.com,也可以是域名, +如 .example.com。它必须至少包含两个由点分隔的部分。 +也就是说,不能仅为 .com 或 .net。 +cookie 安全模型禁止这类 cookie。
+
+ +

你还可以选择设置以下值:

+ +
+
Lifetime
+
cookie 的持续时间,以分钟为单位。
+
值为 0 表示 cookie 仅在当前浏览器会话期间持续存在。 +如果未指定,这是默认值。
+
负值会导致浏览器中的 cookie 被取消设置。
+ +
Path
+
当前网站上 cookie 有效的路径, +如 /customers/ 或 /files/download/。
+
默认设置为 /——即整个网站。
+ +
Secure
+
如果设置为 secure、true 或 1, +则 cookie 只允许通过安全(https)连接传输。
+ +
httponly
+
如果设置为 HttpOnly、true 或 +1,cookie 将设置 HttpOnly 标记, +这意味着在支持此功能的浏览器上,JavaScript 代码无法访问该 cookie。
+ +
samesite
+
如果设置为 false 或 0 以外的任何值, +SameSite 属性将被设置为指定的值。 +典型值为 None、Lax 和 Strict。 +在 2.5.1 及更高版本中可用。
+
+ + +

请看以下示例:

+ +
RewriteEngine On
+RewriteRule   "^/index\.html"   "-" [CO=frontdoor:yes:.example.com:1440:/]
+ + +

在此示例中,规则不会重写请求。"-" 重写目标告诉 +mod_rewrite 不做修改地传递请求。 +相反,它设置了一个名为 'frontdoor'、值为 'yes' 的 cookie。 +该 cookie 对 .example.com 域中的所有主机有效。 +它被设置为在 1440 分钟(24 小时)后过期,并对所有 URI 返回。

+ +
top
+
+

DPI|discardpath

+

DPI 标志使重写后 URI 的 PATH_INFO 部分被丢弃。

+

此标志在 2.2.12 及更高版本中可用。

+

在目录级上下文中,每个 RewriteRule +比较的 URI 是 URI 当前值和 PATH_INFO 的拼接。

+ +

当前 URI 可以是客户端最初请求的 URI、 +mod_rewrite 前一轮处理的结果, +或当前轮 mod_rewrite 处理中先前规则的结果。

+ +

相比之下,在每条规则之前附加到 URI 的 PATH_INFO +仅反映本轮 mod_rewrite 处理之前的 PATH_INFO 值。 +因此,如果 URI 的大部分内容在多个 RewriteRule +指令中被匹配并复制到替换中,而不考虑 URI 的哪些部分来自当前的 +PATH_INFO,则最终 URI 可能会附加多个 PATH_INFO 副本。

+ +

在任何替换中使用此标志,如果从此请求先前映射到文件系统所产生的 +PATH_INFO 不需要的话。此标志会永久忘记本轮 +mod_rewrite 处理开始之前建立的 PATH_INFO。 +在当前轮 mod_rewrite 处理完成之前,PATH_INFO +不会被重新计算。此轮处理中的后续规则将只看到替换的直接结果, +而不会附加任何 PATH_INFO。

+
top
+
+

E|env

+

使用 [E] 或 [env] 标志,你可以设置环境变量的值。 +请注意,某些环境变量可能在规则运行后被设置, +从而取消你所设置的值。有关环境变量工作方式的更多详细信息, +请参阅环境变量文档。

+ +

此标志的完整语法为:

+ +
[E=VAR:VAL]
+[E=!VAR]
+ + +

VAL 可以包含会被展开的反向引用($N 或 +%N)。

+ +

使用缩写形式

+ +

+[E=VAR] +

+ +

你可以将名为 VAR 的环境变量设置为空值。

+ +

使用以下形式

+ +

+[E=!VAR] +

+ +

可以取消设置先前设置的名为 VAR 的环境变量。

+ +

环境变量随后可以在多种上下文中使用, +包括 CGI 程序、其他 RewriteRule 指令或 CustomLog 指令。

+ +

以下示例在请求的 URI 是图像文件时将名为 'image' 的环境变量设置为 '1'。 +然后,该环境变量用于将这些请求从访问日志中排除。

+ +
RewriteRule "\.(png|gif|jpg)$"   "-" [E=image:1]
+CustomLog   "logs/access_log"    combined env=!image
+ + +

请注意,使用 SetEnvIf +也可以达到相同的效果。此处提供此技术作为示例,而非建议。

+
top
+
+

END

+

使用 [END] 标志不仅会终止当前轮的重写处理(如 [L]), +还会阻止在目录级(htaccess)上下文中发生任何后续的重写处理。

+ +

这不适用于由外部重定向产生的新请求。

+
top
+
+

F|forbidden

+

使用 [F] 标志会导致服务器向客户端返回 403 Forbidden 状态码。 +虽然使用 Deny +指令也可以实现相同的行为,但这种方式在分配 Forbidden 状态时更加灵活。

+ +

以下规则将禁止从你的服务器下载 .exe 文件。

+ +
RewriteRule "\.exe"   "-" [F]
+ + +

此示例使用 "-" 语法作为重写目标,这意味着请求的 URI 不会被修改。 +如果你打算禁止请求,就没有理由将其重写到另一个 URI。

+ +

使用 [F] 时,会隐含 [L]——也就是说,响应会立即返回, +不会再评估后续规则。

+ +
top
+
+

G|gone

+

[G] 标志强制服务器在响应中返回 410 Gone 状态。 +这表示资源曾经可用,但现在已不再可用。

+ +

与 [F] 标志一样,使用 [G] 标志时通常使用 "-" 语法作为重写目标:

+ +
RewriteRule "oldproduct"   "-" [G,NC]
+ + +

使用 [G] 时,会隐含 [L]——也就是说,响应会立即返回, +不会再评估后续规则。

+ +
top
+
+

H|handler

+

强制使用指定的处理器来处理结果请求。例如, +可以使用此标志强制所有没有文件扩展名的文件由 php 处理器解析:

+ +
RewriteRule "!\."  "-" [H=application/x-httpd-php]
+ + +

+上面的正则表达式——!\.——将匹配任何不包含字面量 +. 字符的请求。 +

+ +

这也可以用于根据某些条件强制使用处理器。例如, +以下代码片段在服务器级上下文中使用时, +允许以 .phps 扩展名请求的 .php +文件由 mod_php 显示其源代码:

+ +
RewriteRule "^(/source/.+\.php)s$" "$1" [H=application/x-httpd-php-source]
+ + +

上面的正则表达式——^(/source/.+\.php)s$——将匹配任何以 +/source/ 开头,后跟 1 个或多个字符, +再后跟 .phps 的请求。反向引用 +$1 引用正则表达式括号内捕获的匹配内容。

+
top
+
+

L|last

+

[L] 标志使 mod_rewrite +停止处理规则集。在大多数上下文中,这意味着如果规则匹配, +将不再处理后续规则。这对应于 Perl 中的 last +命令或 C 中的 break 命令。使用此标志表示当前规则应立即应用, +而不考虑后续规则。

+ +

如果你在 .htaccess 文件或 +<Directory> +配置段中使用 RewriteRule, +理解规则的处理方式非常重要。简化来说,一旦规则处理完毕, +重写后的请求会被交回 URL 解析引擎进行后续处理。在处理重写后的请求时, +可能会再次遇到 .htaccess 文件或 +<Directory> 配置段, +从而规则集可能会从头开始重新运行。最常见的情况是某条规则导致了重定向—— +无论是内部还是外部重定向——使请求处理重新开始。

+ +

因此,如果你在这些上下文中使用 +RewriteRule +指令,采取明确措施避免规则循环非常重要, +不要仅依赖 [L] 标志来终止一系列规则的执行,如下所示。

+ +

替代标志 [END] 可用于终止当前轮的重写处理, +并阻止在目录级(htaccess)上下文中发生任何后续的重写处理。 +这不适用于由外部重定向产生的新请求。

+ +

此处给出的示例将把所有请求重写到 index.php, +将原始请求作为查询字符串参数传递给 index.php, +但 RewriteCond +确保如果请求已经是 index.php, +则 RewriteRule 将被跳过。

+ +
RewriteBase "/"
+RewriteCond "%{REQUEST_URI}" !=/index.php
+RewriteRule "^(.*)"          "/index.php?req=$1" [L,PT]
+ +
top
+
+

N|next

+

+[N] 标志使规则集从头开始重新运行,使用到目前为止的规则集结果作为起点。 +请极其谨慎地使用,因为它可能导致循环。 +

+

+例如,如果你想在请求中重复替换某个字符串或字母,可以使用 [Next] 标志。 +下面的示例将请求中所有的 A 替换为 B,并持续执行直到没有更多的 A 需要替换。 +

+
RewriteRule "(.*)A(.*)" "$1B$2" [N]
+ +

你可以将此看作 while 循环:当此模式仍然匹配时 +(即 URI 仍然包含 A),执行此替换 +(即将 A 替换为 B)。

+ +

在 2.5.0 及更高版本中,此模块在 10,000 次迭代后返回错误, +以防止意外循环。可以通过向 N 标志添加参数来指定替代的最大迭代次数。

+
# 每次循环替换 1 个字符
+RewriteRule "(.+)[><;]$" "$1" [N=32000]
+# ……或者,10 次循环后放弃
+RewriteRule "(.+)[><;]$" "$1" [N=10]
+ + +
top
+
+

NC|nocase

+

使用 [NC] 标志使 RewriteRule +以不区分大小写的方式进行匹配。也就是说, +匹配的 URI 中字母是大写还是小写都无所谓。

+ +

在下面的示例中,任何图像文件请求将被代理到你的专用图像服务器。 +匹配不区分大小写,因此 .jpg 和 .JPG +文件都可以接受。

+ +
RewriteRule "(.*\.(jpg|gif|png))$" "http://images.example.com$1" [P,NC]
+ +
top
+
+

NE|noescape

+

默认情况下,当 RewriteRule +导致外部重定向时,输出中不在以下安全集中的字符将被转换为其十六进制编码 +(百分比编码)等价物:

+ +
    +
  • 字母数字字符:A-Z、a-z、 + 0-9
  • +
  • 特殊字符:$-_.+!*'(),:;@&=/~
  • +
+ +

例如,# 将被转换为 %23, +? 转换为 %3F。% +字符也会被转义(为 %25),这意味着替换中已有的百分比编码 +将被双重编码。

+ +

使用 [NE] 标志可防止此转义,允许 +# 和 ? 等字符不经修改地传递到重定向 URL。

+ +
RewriteRule "^/anchor/(.+)" "/bigpage.html#$1" [NE,R]
+ + +

+上面的示例将 /anchor/xyz 重定向到 +/bigpage.html#xyz。省略 [NE] 将导致 # +被转换为其十六进制等价物 %23, +从而导致 404 Not Found 错误。 +

+ +
top
+
+

NS|nosubreq

+

使用 [NS] 标志可防止规则被用于子请求。例如, +使用 SSI(服务器端包含)包含的页面是子请求, +你可能希望避免在这些子请求上发生重写。此外, +当 mod_dir +尝试查找可能的目录默认文件(如 index.html 文件)的信息时, +这是一个内部子请求,你通常希望避免在此类子请求上进行重写。 +在子请求上,应用完整的规则集并不总是有用的,甚至可能导致错误。 +使用此标志排除有问题的规则。

+ +

要决定是否使用此规则:如果你使用 CGI 脚本为 URL 添加前缀, +强制它们由 CGI 脚本处理,那么在子请求上你很可能会遇到问题 +(或显著的性能开销)。在这些情况下,请使用此标志。

+ +

+作为 HTML 页面一部分加载的图像、JavaScript 文件或 CSS 文件不是子请求—— +浏览器将它们作为单独的 HTTP 请求发出。 +

+
top
+
+

P|proxy

+

使用 [P] 标志使请求由 mod_proxy +处理,并通过代理请求进行处理。例如, +如果你想让所有图像请求由后端图像服务器处理,可以这样做:

+ +
RewriteRule "/(.*)\.(jpg|gif|png)$" "http://images.example.com/$1.$2" [P]
+ + +

使用 [P] 标志隐含 [L]——也就是说,请求会立即通过代理推送, +后续规则将不被考虑。

+ +

+你必须确保替换字符串是有效的 URI +(通常以 http://hostname 开头), +可以由 mod_proxy 处理。如果不是,你将从代理模块收到错误。 +使用此标志可以实现比 ProxyPass +指令更强大的远程内容到本地服务器命名空间的映射。

+ +
+

安全警告

+

构造规则的目标 URL 时要小心,考虑允许客户端影响你的服务器将作为代理的 +URL 集的安全影响。确保 URL 的方案和主机名部分是固定的, +或者不允许客户端过度影响。

+
+ +
+

性能警告

+

使用此标志会触发 mod_proxy 的使用, +在这种情况下使用默认 worker,不处理持久连接, +因为默认 worker 不处理连接池/重用。

+

要使用持久连接,你需要至少为目标 URL 的方案和主机部分设置一个 +Proxy 块, +其中包含一个 ProxySet +指令,例如设置超时时间。

+

如果使用 ProxyPass 或 +ProxyPassMatch +进行设置,将自动使用持久连接。

+
+ +

注意:必须启用 mod_proxy 才能使用此标志。

+ +
top
+
+

PT|passthrough

+ +

+RewriteRule 中的目标(或替换字符串)默认被假定为文件路径。 +使用 [PT] 标志使其被视为 URI。也就是说, +使用 [PT] 标志会使 RewriteRule 的结果 +被传回到 URL 映射中,从而基于位置的映射,如 +Alias、 +Redirect 或 +ScriptAlias +等,有机会生效。 +

+ +

+例如,如果你有一个 Alias +指向 /icons,并且有一个 RewriteRule 指向那里, +你应该使用 [PT] 标志以确保 +Alias 被正确评估。 +

+ +
Alias "/icons" "/usr/local/apache/icons"
+RewriteRule "/pics/(.+)\.jpg$" "/icons/$1.gif" [PT]
+ + +

+在这种情况下省略 [PT] 标志会导致 Alias 被忽略, +从而返回"文件未找到"错误。 +

+ +

PT 标志隐含 L 标志: +重写将停止以便将请求传递给下一个处理阶段。

+ +

请注意,PT 标志在目录级上下文中是隐含的, +例如 <Directory> +配置段或 .htaccess 文件中。规避此行为的唯一方法是重写为 +-。

+ +
top
+
+

QSA|qsappend

+

+当替换 URI 包含查询字符串时, +RewriteRule +的默认行为是丢弃现有的查询字符串,并用新生成的替换。 +使用 [QSA] 标志可以将查询字符串合并。 +

+ +

请看以下规则:

+ +
RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]
+ + +

使用 [QSA] 标志,对 /pages/123?one=two 的请求将被映射到 +/page.php?page=123&one=two。不使用 [QSA] +标志时,同一请求将被映射到 +/page.php?page=123——也就是说,现有的查询字符串将被丢弃。 +

+
top
+
+

QSD|qsdiscard

+

+当请求的 URI 包含查询字符串而目标 URI 不包含时, +RewriteRule +的默认行为是将该查询字符串复制到目标 URI。 +使用 [QSD] 标志可以丢弃查询字符串。 +

+ +

此标志在 2.4.0 及更高版本中可用。

+ +

+同时使用 [QSD] 和 [QSA] 将导致 [QSD] 优先。 +

+ +

+如果目标 URI 有查询字符串,将执行默认行为—— +也就是说,原始查询字符串将被丢弃并替换为 RewriteRule +目标 URI 中的查询字符串。 +

+ +
top
+
+

QSL|qslast

+

+默认情况下,替换中第一个(最左边的)问号将路径与查询字符串分开。 +使用 [QSL] 标志指示 +RewriteRule +改为使用最后一个(最右边的)问号来分隔两个组件。

+ +

+当映射到文件名中包含字面量问号的文件时,这很有用。 +如果替换中未使用查询字符串,可以结合此标志在替换后附加一个问号。

+ +

此标志在 2.4.19 及更高版本中可用。

+ +
top
+
+

R|redirect

+

+使用 [R] 标志会导致向浏览器发出 HTTP 重定向。 +如果指定了完全限定的 URL(即包含 http://servername/), +则将重定向到该位置。否则,将使用当前协议、服务器名称和端口号 +来生成与重定向一起发送的 URL。 +

+ +

+可以使用 [R=305] 语法指定任何有效的 HTTP 响应状态码, +如果未指定则默认使用 302 状态码。指定的状态码不一定必须是重定向(3xx)状态码。 +但是,如果状态码超出重定向范围(300-399),替换字符串将被完全丢弃, +重写将像使用了 L 一样停止。

+ +

除了响应状态码外,你还可以使用它们的符号名称指定重定向状态: +temp(默认)、permanent 或 seeother。

+ +

+你几乎总是希望将 [R] 与 [L] 结合使用(即使用 [R,L]), +因为 [R] 标志本身只是在 URI 前面添加 +http://thishost[:thisport],然后将其传递给规则集中的下一条规则, +这通常会导致"请求中的 URI 无效"警告。 +

+ +

注意:httpd 仅支持 HTTP 规范中包含的状态码。 +使用无法识别的状态码将导致 500 错误和错误日志消息。

+ +
top
+
+

S|skip

+

[S] 标志用于跳过你不想运行的规则。 +跳过标志的语法为 [S=N],其中 N +表示要跳过的规则数(前提是 +RewriteRule 及其前面的 +RewriteCond +指令匹配)。这可以看作是重写规则集中的 goto 语句。 +在以下示例中,我们只想在请求的 URI +不对应实际文件时才运行 RewriteRule。

+ +
# Is the request for a non-existent file?
+RewriteCond "%{REQUEST_FILENAME}" !-f
+RewriteCond "%{REQUEST_FILENAME}" !-d
+# If so, skip these two RewriteRules
+RewriteRule ".?"                  "-" [S=2]
+
+RewriteRule "(.*\.gif)"           "images.php?$1"
+RewriteRule "(.*\.html)"          "docs.php?$1"
+ + +

此技术很有用,因为 RewriteCond 只应用于紧随其后的 +RewriteRule。 +因此,如果你想让一个 RewriteCond 应用于多个 +RewriteRule,一种可能的技术是否定这些条件并添加一个带有 +[Skip] 标志的 RewriteRule。你可以用此构造伪 +if-then-else 结构:then 子句的最后一条规则变为 +skip=N,其中 N 是 else 子句中的规则数:

+
# Does the file exist?
+RewriteCond "%{REQUEST_FILENAME}" !-f
+RewriteCond "%{REQUEST_FILENAME}" !-d
+# Create an if-then-else construct by skipping 3 lines if we meant to go to the "else" stanza.
+RewriteRule ".?"                  "-" [S=3]
+
+# IF the file exists, then:
+    RewriteRule "(.*\.gif)"  "images.php?$1"
+    RewriteRule "(.*\.html)" "docs.php?$1"
+    # Skip past the "else" stanza.
+    RewriteRule ".?"         "-" [S=1]
+# ELSE...
+    RewriteRule "(.*)"       "404.php?file=$1"
+# END
+ + +

使用 <If>、<ElseIf> 和 <Else> 指令可能更容易实现这种配置。

+ +
top
+
+

T|type

+

设置响应将以何种 MIME 类型发送。这与 AddType 指令的效果相同。

+ +

例如,你可以使用以下技术在以特定方式请求时将 Perl 源代码作为纯文本提供:

+ +
# 将 .pl 文件作为纯文本提供
+RewriteRule "\.pl$"  "-" [T=text/plain]
+ + +

或者,如果你有一台相机生成没有文件扩展名的 jpeg 图像, +你可以根据文件名强制使用正确的 MIME 类型来提供这些图像:

+ +
# 文件名中包含 'IMG' 的是 jpg 图像。
+RewriteRule "IMG"  "-" [T=image/jpg]
+ + +

请注意,这是一个简单的示例,使用 +<FilesMatch> +可以更好地完成。在使用重写之前,始终考虑问题的替代解决方案, +因为重写总是比替代方案效率更低。

+ +

+如果在目录级上下文中使用,在整轮 mod_rewrite +处理过程中仅使用 -(破折号)作为替换, +否则使用此标志设置的 MIME 类型将由于内部重新处理 +(包括后续轮次的 mod_rewrite 处理)而丢失。 +L 标志在此上下文中可用于结束当前轮的 +mod_rewrite 处理。

+
top
+
+

UnsafeAllow3F

+

如果被重写的 HTTP 请求包含编码的问号 '%3f', + 且重写结果的替换中包含 '?',则需要设置此标志才能允许重写继续。 + 这可以防止恶意 URL 利用捕获和重新替换编码的问号。

+
top
+
+

UnsafePrefixStat

+

当服务器范围内的替换以变量或反向引用开头并解析为文件系统路径时, + 需要设置此标志。这些替换不会以文档根目录为前缀。 + 这可以防止恶意 URL 导致展开的替换映射到意外的文件系统位置。

+ +

Available in Apache HTTP Server 2.5.1 and later.

+
top
+
+

UNC

+

设置此标志可防止合并多个前导斜杠, + 如 Windows UNC 路径中使用的那样。当规则替换以多个字面量斜杠开头时, + 不需要此标志。

+ +

Available in Apache HTTP Server 2.5.1 and later.

+
+
+

可用语言:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/htaccess.html b/docs/manual/rewrite/htaccess.html index d95261c02e..05887c0281 100644 --- a/docs/manual/rewrite/htaccess.html +++ b/docs/manual/rewrite/htaccess.html @@ -1,9 +1,33 @@ # GENERATED FROM XML -- DO NOT EDIT +URI: htaccess.html.de +Content-Language: de +Content-type: text/html; charset=ISO-8859-1 + URI: htaccess.html.en.utf8 Content-Language: en Content-type: text/html; charset=UTF-8 +URI: htaccess.html.es.utf8 +Content-Language: es +Content-type: text/html; charset=UTF-8 + URI: htaccess.html.fr.utf8 Content-Language: fr Content-type: text/html; charset=UTF-8 + +URI: htaccess.html.ja.utf8 +Content-Language: ja +Content-type: text/html; charset=UTF-8 + +URI: htaccess.html.ko.euc-kr +Content-Language: ko +Content-type: text/html; charset=EUC-KR + +URI: htaccess.html.tr.utf8 +Content-Language: tr +Content-type: text/html; charset=UTF-8 + +URI: htaccess.html.zh-cn.utf8 +Content-Language: zh-cn +Content-type: text/html; charset=UTF-8 diff --git a/docs/manual/rewrite/htaccess.html.de b/docs/manual/rewrite/htaccess.html.de new file mode 100644 index 0000000000..ada7ee24ad --- /dev/null +++ b/docs/manual/rewrite/htaccess.html.de @@ -0,0 +1,61 @@ + + + + + +mod_rewrite und .htaccess-Dateien - Apache HTTP Server Version 2.5 + + + + + + + +
<-
+

mod_rewrite und .htaccess-Dateien

+
+

Verfügbare Sprachen:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ + +

Dieses Dokument ergänzt die mod_rewrite +Referenzdokumentation. Es beschreibt, +wie sich die Regeln ändern, wenn Sie mod_rewrite in +.htaccess-Dateien verwenden, und wie Sie mit diesen Änderungen umgehen.

+ +
+ +
+
+

Verfügbare Sprachen:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/htaccess.html.en.utf8 b/docs/manual/rewrite/htaccess.html.en.utf8 index 3526156a1a..a9032f1e69 100644 --- a/docs/manual/rewrite/htaccess.html.en.utf8 +++ b/docs/manual/rewrite/htaccess.html.en.utf8 @@ -23,8 +23,14 @@

mod_rewrite and .htaccess files

-

Available Languages:  en  | - fr 

+

Available Languages:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

@@ -37,8 +43,14 @@ and how to deal with these changes.

-

Available Languages:  en  | - fr 

+

Available Languages:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+ + + +
<-
+

mod_rewrite y archivos .htaccess

+
+

Idiomas disponibles:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ + +

Este documento complementa la mod_rewrite +documentación de referencia. Describe +la forma en que las reglas cambian cuando usa mod_rewrite en archivos .htaccess, +y cómo lidiar con estos cambios.

+ +
+ +
+
+

Idiomas disponibles:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

+
+ \ No newline at end of file diff --git a/docs/manual/rewrite/htaccess.html.fr.utf8 b/docs/manual/rewrite/htaccess.html.fr.utf8 index 370b33a007..1aeb472dc6 100644 --- a/docs/manual/rewrite/htaccess.html.fr.utf8 +++ b/docs/manual/rewrite/htaccess.html.fr.utf8 @@ -23,8 +23,14 @@

mod_rewrite et les fichiers .htaccess

-

Langues Disponibles:  en  | - fr 

+

Langues Disponibles:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

@@ -38,8 +44,14 @@ comment travailler avec ces changements.

correspondance
  • Serveurs virtuels
  • Serveurs mandataires
  • Utilisation de RewriteMap
  • Techniques avancées
  • Quand ne pas utiliser mod_rewrite
  • Commentaires
  • -

    Langues Disponibles:  en  | - fr 

    +

    Langues Disponibles:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

    + + + +
    <-
    +

    mod_rewrite と .htaccess ファイル

    +
    +

    翻訳済み言語:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

    +
    + + +

    このドキュメントは mod_rewrite +リファレンスドキュメントを補足するものです。 +.htaccess ファイルで mod_rewrite を使用する際のルールの変更点と、 +それらの変更への対処方法について説明します。

    + +
    + +
    +
    +

    翻訳済み言語:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

    +
    + \ No newline at end of file diff --git a/docs/manual/rewrite/htaccess.html.ko.euc-kr b/docs/manual/rewrite/htaccess.html.ko.euc-kr new file mode 100644 index 0000000000..f9a39f7a97 --- /dev/null +++ b/docs/manual/rewrite/htaccess.html.ko.euc-kr @@ -0,0 +1,62 @@ + + + + + +mod_rewrite�� .htaccess ���� - Apache HTTP Server Version 2.5 + + + + + + + +
    <-
    +

    mod_rewrite�� .htaccess ����

    +
    +

    °¡´ÉÇÑ ¾ð¾î:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

    +
    + + +

    �� 문ì���� mod_rewrite +참조 문ì��ë¥� ë³´ì¶©�©ë����. +.htaccess ���¼ì���� mod_rewriteë¥� �¬ì�©í�� �� +ê·�ì¹��� ë³�ê²½ë���� ë°©ì��ê³� �´ë�¬í�� ë³�ê²� �¬í���� ì²�리í���� ë°©ë��� +�¤ë��©ë����.

    + +
    + +
    +
    +

    °¡´ÉÇÑ ¾ð¾î:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

    +
    + \ No newline at end of file diff --git a/docs/manual/rewrite/htaccess.html.tr.utf8 b/docs/manual/rewrite/htaccess.html.tr.utf8 new file mode 100644 index 0000000000..0a8840cc5a --- /dev/null +++ b/docs/manual/rewrite/htaccess.html.tr.utf8 @@ -0,0 +1,62 @@ + + + + + +mod_rewrite ve .htaccess dosyaları - Apache HTTP Sunucusu Sürüm 2.5 + + + + + + + +
    <-
    +

    mod_rewrite ve .htaccess dosyaları

    +
    +

    Mevcut Diller:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

    +
    + + +

    Bu belge, mod_rewrite +başvuru belgelerini tamamlar. +mod_rewrite modülünü .htaccess dosyalarında +kullandığınızda kuralların nasıl değiştiğini ve bu değişikliklerle +nasıl başa çıkacağınızı açıklar.

    + +
    + +
    +
    +

    Mevcut Diller:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

    +
    + \ No newline at end of file diff --git a/docs/manual/rewrite/htaccess.html.zh-cn.utf8 b/docs/manual/rewrite/htaccess.html.zh-cn.utf8 new file mode 100644 index 0000000000..dfe83c1e84 --- /dev/null +++ b/docs/manual/rewrite/htaccess.html.zh-cn.utf8 @@ -0,0 +1,61 @@ + + + + + +mod_rewrite 和 .htaccess 文件 - Apache HTTP 服务器 版本 2.5 + + + + + + + +
    <-
    +

    mod_rewrite 和 .htaccess 文件

    +
    +

    可用语言:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

    +
    + + +

    本文档是 mod_rewrite +参考文档的补充。它描述了在 +.htaccess 文件中使用 mod_rewrite 时规则的变化方式, +以及如何处理这些变化。

    + +
    + +
    +
    +

    可用语言:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

    +
    + \ No newline at end of file diff --git a/docs/manual/rewrite/index.html b/docs/manual/rewrite/index.html index c6aecd79c1..aa884b70bb 100644 --- a/docs/manual/rewrite/index.html +++ b/docs/manual/rewrite/index.html @@ -1,13 +1,29 @@ # GENERATED FROM XML -- DO NOT EDIT +URI: index.html.de +Content-Language: de +Content-type: text/html; charset=ISO-8859-1 + URI: index.html.en.utf8 Content-Language: en Content-type: text/html; charset=UTF-8 +URI: index.html.es.utf8 +Content-Language: es +Content-type: text/html; charset=UTF-8 + URI: index.html.fr.utf8 Content-Language: fr Content-type: text/html; charset=UTF-8 +URI: index.html.ja.utf8 +Content-Language: ja +Content-type: text/html; charset=UTF-8 + +URI: index.html.ko.euc-kr +Content-Language: ko +Content-type: text/html; charset=EUC-KR + URI: index.html.tr.utf8 Content-Language: tr Content-type: text/html; charset=UTF-8 diff --git a/docs/manual/rewrite/index.html.de b/docs/manual/rewrite/index.html.de new file mode 100644 index 0000000000..02044c7274 --- /dev/null +++ b/docs/manual/rewrite/index.html.de @@ -0,0 +1,105 @@ + + + + + +Apache mod_rewrite - Apache HTTP Server Version 2.5 + + + + + + + +
    <-
    +

    Apache mod_rewrite

    +
    +

    Verfügbare Sprachen:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

    +
    + + +

    mod_rewrite bietet eine Möglichkeit, eingehende + URL-Anfragen dynamisch zu modifizieren, basierend auf Regeln mit + regulären Ausdrücken. Dies ermöglicht + es Ihnen, beliebige URLs auf Ihre interne URL-Struktur in jeder + gewünschten Weise abzubilden.

    + +

    Es unterstützt eine unbegrenzte Anzahl von Regeln und eine + unbegrenzte Anzahl angehängter Regelbedingungen für jede Regel, + um einen wirklich flexiblen und leistungsfähigen Mechanismus zur + URL-Manipulation bereitzustellen. Die URL-Manipulationen können + von verschiedenen Tests abhängen: Servervariablen, Umgebungsvariablen, + HTTP-Header, Zeitstempel, externe Datenbankabfragen und verschiedene + andere externe Programme oder Handler können verwendet werden, um + eine granulare URL-Zuordnung zu erreichen.

    + +

    Umschreibungsregeln können auf vollständige URLs angewendet werden, + einschließlich des Pfadinfo- und Query-String-Teils, und können im + Server-Kontext (httpd.conf), im VirtualHost-Kontext + (<VirtualHost>-Blöcke) + oder im Verzeichniskontext (.htaccess-Dateien und + <Directory>-Blöcke) + verwendet werden. Das umgeschriebene Ergebnis kann zu weiteren Regeln, + interner Unterverarbeitung, externer Anfrage-Umleitung oder + Proxy-Weiterleitung führen, abhängig davon, welche + Flags Sie an die Regeln anhängen.

    + +

    Da mod_rewrite so leistungsfähig ist, kann es + tatsächlich recht komplex sein. Dieses Dokument ergänzt die + Referenzdokumentation und + versucht, einen Teil dieser Komplexität zu mildern und hochgradig + kommentierte Beispiele für gängige Szenarien bereitzustellen, die Sie + mit mod_rewrite bewältigen können. Wir versuchen aber + auch zu zeigen, wann Sie mod_rewrite nicht verwenden + sollten, und stattdessen andere Standard-Apache-Funktionen nutzen + sollten, um diese unnötige Komplexität zu vermeiden.

    + + +
    + +
    +
    +

    Verfügbare Sprachen:  de  | + en  | + es  | + fr  | + ja  | + ko  | + tr  | + zh-cn 

    +
    + \ No newline at end of file diff --git a/docs/manual/rewrite/index.html.en.utf8 b/docs/manual/rewrite/index.html.en.utf8 index 1457431246..7b6f44ab14 100644 --- a/docs/manual/rewrite/index.html.en.utf8 +++ b/docs/manual/rewrite/index.html.en.utf8 @@ -23,8 +23,12 @@

    Apache mod_rewrite

    -

    Available Languages:  en  | +

    Available Languages:  de  | + en  | + es  |  fr  | + ja  | + ko  |  tr  |  zh-cn 

    @@ -82,8 +86,12 @@ documentation
  • Mapping URLs to the Files wiki
  • Glossary
  • -

    Available Languages:  en  | +

    Available Languages:  de  | + en  | + es  |  fr  | + ja  | + ko  |  tr  |  zh-cn