From: Rich Bowen Date: Thu, 14 May 2026 19:24:08 +0000 (+0000) Subject: rewrite guide: remove deprecated stub pages (access, advanced, proxy) X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6eaf010db86087c3541ff8901e2fc3be7978e2b8;p=thirdparty%2Fapache%2Fhttpd.git rewrite guide: remove deprecated stub pages (access, advanced, proxy) These pages were replaced by reorganized content in avoid.xml, remapping.xml, rewritemap.xml, and flags.xml during the redundancy cleanup. Each stub contained only a deprecation notice with pointers to the new locations, and no other page in the guide links to them. Removes 54 files (English sources, translations, built HTML, meta). We will *not* be deleting these in 2.4 but some day when 2.6 branches, they'll get dropped. The versions in 2.4 are already marked as deprecated, with a "will go away in the future" message, so by that time, this should take care of itself. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1934199 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/docs/manual/rewrite/TODO.md b/docs/manual/rewrite/TODO.md index c7e24680ce..a50108c4ea 100644 --- a/docs/manual/rewrite/TODO.md +++ b/docs/manual/rewrite/TODO.md @@ -40,7 +40,7 @@ result in one file "owning" the content and others cross-referencing it. - [x] **Harmonize `` blocks** — htaccess.xml not consistently listed in other files' seealso despite being a major topic. -- [ ] **Deprecated stub files** (access.xml, advanced.xml, proxy.xml) — +- [x] **Deprecated stub files** (access.xml, advanced.xml, proxy.xml) — Remove from trunk. Leave in 2.4 during sync (they'll drop in 2.6). - [x] **Figure numbering collision** — both intro.xml and tech.xml use diff --git a/docs/manual/rewrite/access.html b/docs/manual/rewrite/access.html deleted file mode 100644 index 314e3f2054..0000000000 --- a/docs/manual/rewrite/access.html +++ /dev/null @@ -1,33 +0,0 @@ -# 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 deleted file mode 100644 index 57d51fcf75..0000000000 --- a/docs/manual/rewrite/access.html.de +++ /dev/null @@ -1,321 +0,0 @@ - - - - - -Zugriffskontrolle mit mod_rewrite - Apache HTTP Server Version 2.5 - - - - - - - -
<-
-

Zugriffskontrolle mit mod_rewrite

-
-

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

-
-
Diese Übersetzung ist möglicherweise - nicht mehr aktuell. Bitte prüfen Sie die englische Version auf - die neuesten Änderungen.
- - -

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 deleted file mode 100644 index dbca35b443..0000000000 --- a/docs/manual/rewrite/access.html.en.utf8 +++ /dev/null @@ -1,71 +0,0 @@ - - - - - -Using mod_rewrite to control access - Apache HTTP Server Version 2.5 - - - - - - - -
<-
-

Using mod_rewrite to control access

-
-

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

-
- - -
This document has been deprecated. Its content has -been reorganized into the -When not to use mod_rewrite document, since -the recipes here are better accomplished using other Apache httpd -features. This page will be removed in a future version of this -documentation.
- - - -
-
-
-

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

-
- \ No newline at end of file diff --git a/docs/manual/rewrite/access.html.es.utf8 b/docs/manual/rewrite/access.html.es.utf8 deleted file mode 100644 index 341ffa2d02..0000000000 --- a/docs/manual/rewrite/access.html.es.utf8 +++ /dev/null @@ -1,322 +0,0 @@ - - - - - -Uso de mod_rewrite para control de acceso - Servidor HTTP Apache Versión 2.5 - - - - - - - -
<-
-

Uso de mod_rewrite para control de acceso

-
-

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

-
-
Esta traducción podría estar - obsoleta. Consulte la versión en inglés de la - documentación para comprobar si se han producido cambios - recientemente.
- - -

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 deleted file mode 100644 index bc2c662359..0000000000 --- a/docs/manual/rewrite/access.html.fr.utf8 +++ /dev/null @@ -1,328 +0,0 @@ - - - - - -Utiliser mod_rewrite pour le contrôle d'accès - Serveur HTTP Apache Version 2.5 - - - - - - - -
<-
-

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

-
-

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 -mod_rewrite. Il explique comment utiliser -mod_rewrite pour contrôler l'accès à diverses -ressources, ainsi que d'autres techniques en rapport. Il contient de -nombreux exemples d'utilisation courante de mod_rewrite avec une -description détaillée de leur fonctionnement.

- -
Vous devez vous attacher à comprendre le -fonctionnement des exemples, car la plupart d'entre eux ne -fonctionneront pas sur votre système si vous vous contentez de les -copier/coller dans vos fichiers de configuration.
- -
- -
top
-
-

Blocage du référencement à chaud (Hotlinking) d'images

- - - -
-
Description :
- -
-

Cette technique vous permet d'interdire à d'autres sites - d'inclure directement vos images dans leurs pages. On fait - souvent référence à cette pratique sous le nom de - référencement à chaud (Hotlinking) qui entraîne l'utilisation - de votre bande passante pour servir des contenus faisant - partie du site de quelqu'un d'autre.

-
- -
Solution :
- -
-

Cette technique repose sur la valeur de la variable - optionnelle HTTP_REFERER. Certaines personnes - pourront donc contourner cette limitation. Pour la plupart des - utilisateurs cependant, la requête échouera, en ce sens que - l'image ne sera pas affichée depuis le site tiers.

-

Il y a plusieurs manières de gérer cette situation.

- -

Dans le premier exemple, nous rejetons tout simplement la - requête si elle ne provenait pas d'une page appartenant à notre - site. Pour les besoins de cet exemple, nous supposons que le nom - de votre site est www.example.com.

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

Dans le second exemple, plutôt que de rejeter la requête, - nous affichons une autre image à la place.

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

Dans le troisième exemple, nous redirigeons la requête vers - une image appartenant à un autre site.

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

De tous ces exemples, les deux derniers semblent les plus - efficaces pour faire en sorte que les gens arrêtent de - référencer vos images à chaud, car il ne verront pas les images - qu'ils s'attendent à voir.

- -
- -
Discussion :
- -
-

Si vous ne voulez pas rediriger la requête, mais - simplement interdire l'accès à la ressource, vous pouvez y - parvenir sans utiliser mod_rewrite :

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

Blocage des robots

- - - -
-
Description :
- -
-

- Dans cet exemple, nous allons discuter d'une méthode permettant - de bloquer les requêtes persistentes en provenance d'un robot - particulier, ou d'un navigateur.

- -

La méthode classique pour exclure un robot consiste à définir - un fichier, /robots.txt qui spécifie les parties de - votre site web pour lesquelles vous voulez exclure les robots. - Malheureusement, certains robots ne tiennent pas compte de ces - fichiers. -

- -

Notez qu'il existe des méthodes d'exclusion qui n'utilisent - pas mod_rewrite. Notez aussi que toute technique qui repose sur - le contenu de la chaîne client USER_AGENT peut être - contournée très facilement car cette chaîne peut être modifiée.

-
- -
Solution :
- -
-

On utilise un jeu de règles qui spécifie le répertoire à - protéger, ainsi que la chaîne client USER_AGENT qui - identifie le robot malin ou envahissant.

- -

Dans cet exemple, nous bloquons un robot nommé - Vilain_Robot pour le répertoire - /secret/fichiers. Si vous voulez bloquer ce client - seulement depuis une source particulière, vous pouvez aussi - spécifier un intervalle d'adresses IP.

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

- Vous pouvez cependant parvenir au même résultat sans utiliser - mod_rewrite via la méthode alternative suivante : -

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

- Comme indiqué plus haut, il est aisé de contourner cette - technique, simplement en modifiant le contenu de l'en-tête - USER_AGENT. Si vous subissez une attaque en règle, - vous allez devoir réfléchir à un blocage à un niveau supérieur, - par exemple une règle de filtrage de votre pare-feu. -

- -
- -
- -
top
-
-

Rejet des clients contenus dans une liste de proscrits

- - - -
-
Description :
- -
-

Nous voulons interdire l'accès à notre serveur aux clients - contenus dans une liste de proscrits similaire à - hosts.deny.

-
- -
Solution :
- -
-
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
-##
-## ATTENTION! Ceci est une table de correspondances, non une liste,
-## même si elle est traitée comme telle. mod_rewrite
-## l'interprète comme une liste de paires clé/valeur, et
-## chaque entrée doit au moins posséder une valeur par
-## défaut "-".
-
-193.102.180.41 -
-bsdti1.sdm.de -
-192.76.162.40 -
-

-
- -
Discussion :
-
-

- La seconde condition RewriteCond présuppose que HostNameLookups est - défini à On, de façon à ce que les adresses IP des clients puissent - être résolues. Dans le cas contraire, vous devez supprimer la - seconde condition, ainsi que le drapeau [OR] de la - première. -

-
-
- -
top
-
-

Aiguillage basé sur l'en-tête Referer

- - - -
-
Description :
- -
-

Redirige les requêtes en fonction du Referer de provenance de - la requête, avec des cibles différentes pour chaque Referer.

-
- -
Solution :
- -
-

Le jeu de règles suivant utilise un fichier de correspondances pour - associer chaque Referer à une cible de redirection.

- -
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]
- - -

Le fichier de correspondances contient les cibles de - redirection associées à chaque Referer, ou, si nous voulons - simplement rediriger les requêtes vers leur Referer, un "-" est - inscrit dans le fichier de correspondances :

- -
##
-##  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/
- - -
-
- -
-
-

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

-
- \ No newline at end of file diff --git a/docs/manual/rewrite/access.html.ja.utf8 b/docs/manual/rewrite/access.html.ja.utf8 deleted file mode 100644 index f65dea09e0..0000000000 --- a/docs/manual/rewrite/access.html.ja.utf8 +++ /dev/null @@ -1,315 +0,0 @@ - - - - - -mod_rewrite を使ったアクセス制御 - Apache HTTP サーバ バージョン 2.5 - - - - - - - -
<-
-

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 deleted file mode 100644 index 0e61e432be..0000000000 --- a/docs/manual/rewrite/access.html.ko.euc-kr +++ /dev/null @@ -1,318 +0,0 @@ - - - - - -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�� �¼ë����� �¬ì�� ����ê°� -ë§��� �¬í�¨ë���� ���¼ë©°, ê°�ê°��� �´ë�»ê� ��������ì§��� ���� -���¸í�� �¤ë��� ���µë����.

- -
�� ������ ì¤� ë§��� ê²��� �¹ì�� ��ë²� �¤ì������ -ê·¸ë��ë¡� ������ì§� ���� �� ���¼ë��ë¡�, �¨ì���� ����ë¥� ë³µì�¬í���� -�¤ì���� ë¶��¬ë�£ê¸°ë³´ë�¤ë�� �´í�´í���� ê²��� ì¤����©ë����.
- -
- -
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 deleted file mode 100644 index 0592f596f6..0000000000 --- a/docs/manual/rewrite/access.html.tr.utf8 +++ /dev/null @@ -1,319 +0,0 @@ - - - - - -Erişim Denetimi için mod_rewrite Kullanımı - Apache HTTP Sunucusu Sürüm 2.5 - - - - - - - -
<-
-

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

-
-

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

-
-
Bu çeviri güncel olmayabilir. Son değişiklikler için İngilizce sürüm geçerlidir.
- - -

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 deleted file mode 100644 index 9cac9d784b..0000000000 --- a/docs/manual/rewrite/access.html.zh-cn.utf8 +++ /dev/null @@ -1,294 +0,0 @@ - - - - - -使用 mod_rewrite 控制访问 - Apache HTTP 服务器 版本 2.5 - - - - - - - -
<-
-

使用 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/access.xml b/docs/manual/rewrite/access.xml deleted file mode 100644 index c418d02c3b..0000000000 --- a/docs/manual/rewrite/access.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - Rewrite - -Using mod_rewrite to control access - - - -This document has been deprecated. Its content has -been reorganized into the -When not to use mod_rewrite document, since -the recipes here are better accomplished using other Apache httpd -features. This page will be removed in a future version of this -documentation. - - - - - - diff --git a/docs/manual/rewrite/access.xml.de b/docs/manual/rewrite/access.xml.de deleted file mode 100644 index f316cc3fd7..0000000000 --- a/docs/manual/rewrite/access.xml.de +++ /dev/null @@ -1,308 +0,0 @@ - - - - - - - - - Rewrite - -Zugriffskontrolle mit mod_rewrite - - - -

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. - -
-Moduldokumentation -Einführung in mod_rewrite -Umleitung und Neuzuordnung - -Virtuelle Hosts -Proxying -Verwendung von RewriteMap -Fortgeschrittene Techniken -Wann man mod_rewrite nicht verwenden sollte - -
- - 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> - -
-
- -
- -
- - 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. -

- -
- -
- -
- -
- - 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. -

-
-
- -
- -
- - 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/ - - -
-
- -
- -
\ No newline at end of file diff --git a/docs/manual/rewrite/access.xml.es b/docs/manual/rewrite/access.xml.es deleted file mode 100644 index 3ab11ee214..0000000000 --- a/docs/manual/rewrite/access.xml.es +++ /dev/null @@ -1,308 +0,0 @@ - - - - - - - - - Rewrite - -Uso de mod_rewrite para control de acceso - - - -

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. - -
-Documentación del módulo -Introducción a mod_rewrite -Redirección y remapeo - -Hosts virtuales -Proxy -Uso de RewriteMap -Técnicas avanzadas -Cuándo no usar mod_rewrite - -
- - 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> - -
-
- -
- -
- - 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. -

- -
- -
- -
- -
- - 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. -

-
-
- -
- -
- - 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/ - - -
-
- -
- -
diff --git a/docs/manual/rewrite/access.xml.fr b/docs/manual/rewrite/access.xml.fr deleted file mode 100644 index 3bf5e5cc06..0000000000 --- a/docs/manual/rewrite/access.xml.fr +++ /dev/null @@ -1,321 +0,0 @@ - - - - - - - - - - - - Rewrite - -Utiliser mod_rewrite pour le contrôle d'accès - - - -

Ce document est un complément à la documentation de référence de -mod_rewrite. Il explique comment utiliser -mod_rewrite pour contrôler l'accès à diverses -ressources, ainsi que d'autres techniques en rapport. Il contient de -nombreux exemples d'utilisation courante de mod_rewrite avec une -description détaillée de leur fonctionnement.

- -Vous devez vous attacher à comprendre le -fonctionnement des exemples, car la plupart d'entre eux ne -fonctionneront pas sur votre système si vous vous contentez de les -copier/coller dans vos fichiers de configuration. - -
-Documentation du module mod_rewrite -Introduction à mod_rewrite -Redirection et remise en -correspondance - -Serveurs virtuels -Serveurs mandataires -Utilisation de RewriteMap -Techniques avancées -Quand ne pas utiliser mod_rewrite - -
- - Blocage du référencement à chaud (Hotlinking) d'images - -
-
Description :
- -
-

Cette technique vous permet d'interdire à d'autres sites - d'inclure directement vos images dans leurs pages. On fait - souvent référence à cette pratique sous le nom de - référencement à chaud (Hotlinking) qui entraîne l'utilisation - de votre bande passante pour servir des contenus faisant - partie du site de quelqu'un d'autre.

-
- -
Solution :
- -
-

Cette technique repose sur la valeur de la variable - optionnelle HTTP_REFERER. Certaines personnes - pourront donc contourner cette limitation. Pour la plupart des - utilisateurs cependant, la requête échouera, en ce sens que - l'image ne sera pas affichée depuis le site tiers.

-

Il y a plusieurs manières de gérer cette situation.

- -

Dans le premier exemple, nous rejetons tout simplement la - requête si elle ne provenait pas d'une page appartenant à notre - site. Pour les besoins de cet exemple, nous supposons que le nom - de votre site est www.example.com.

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

Dans le second exemple, plutôt que de rejeter la requête, - nous affichons une autre image à la place.

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

Dans le troisième exemple, nous redirigeons la requête vers - une image appartenant à un autre site.

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

De tous ces exemples, les deux derniers semblent les plus - efficaces pour faire en sorte que les gens arrêtent de - référencer vos images à chaud, car il ne verront pas les images - qu'ils s'attendent à voir.

- -
- -
Discussion :
- -
-

Si vous ne voulez pas rediriger la requête, mais - simplement interdire l'accès à la ressource, vous pouvez y - parvenir sans utiliser mod_rewrite :

- - -SetEnvIf Referer example\.com localreferer -<FilesMatch "\.(jpg|png|gif)$"> - Require env localreferer -</FilesMatch> - -
-
- -
- -
- - Blocage des robots - -
-
Description :
- -
-

- Dans cet exemple, nous allons discuter d'une méthode permettant - de bloquer les requêtes persistentes en provenance d'un robot - particulier, ou d'un navigateur.

- -

La méthode classique pour exclure un robot consiste à définir - un fichier, /robots.txt qui spécifie les parties de - votre site web pour lesquelles vous voulez exclure les robots. - Malheureusement, certains robots ne tiennent pas compte de ces - fichiers. -

- -

Notez qu'il existe des méthodes d'exclusion qui n'utilisent - pas mod_rewrite. Notez aussi que toute technique qui repose sur - le contenu de la chaîne client USER_AGENT peut être - contournée très facilement car cette chaîne peut être modifiée.

-
- -
Solution :
- -
-

On utilise un jeu de règles qui spécifie le répertoire à - protéger, ainsi que la chaîne client USER_AGENT qui - identifie le robot malin ou envahissant.

- -

Dans cet exemple, nous bloquons un robot nommé - Vilain_Robot pour le répertoire - /secret/fichiers. Si vous voulez bloquer ce client - seulement depuis une source particulière, vous pouvez aussi - spécifier un intervalle d'adresses IP.

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

- Vous pouvez cependant parvenir au même résultat sans utiliser - mod_rewrite via la méthode alternative suivante : -

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

- Comme indiqué plus haut, il est aisé de contourner cette - technique, simplement en modifiant le contenu de l'en-tête - USER_AGENT. Si vous subissez une attaque en règle, - vous allez devoir réfléchir à un blocage à un niveau supérieur, - par exemple une règle de filtrage de votre pare-feu. -

- -
- -
- -
- -
- - Rejet des clients contenus dans une liste de proscrits - -
-
Description :
- -
-

Nous voulons interdire l'accès à notre serveur aux clients - contenus dans une liste de proscrits similaire à - hosts.deny.

-
- -
Solution :
- -
- -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
-##
-## ATTENTION! Ceci est une table de correspondances, non une liste,
-## même si elle est traitée comme telle. mod_rewrite
-## l'interprète comme une liste de paires clé/valeur, et
-## chaque entrée doit au moins posséder une valeur par
-## défaut "-".
-
-193.102.180.41 -
-bsdti1.sdm.de -
-192.76.162.40 -
-
-
- -
Discussion :
-
-

- La seconde condition RewriteCond présuppose que HostNameLookups est - défini à On, de façon à ce que les adresses IP des clients puissent - être résolues. Dans le cas contraire, vous devez supprimer la - seconde condition, ainsi que le drapeau [OR] de la - première. -

-
-
- -
- -
- - Aiguillage basé sur l'en-tête Referer - -
-
Description :
- -
-

Redirige les requêtes en fonction du Referer de provenance de - la requête, avec des cibles différentes pour chaque Referer.

-
- -
Solution :
- -
-

Le jeu de règles suivant utilise un fichier de correspondances pour - associer chaque Referer à une cible de redirection.

- - -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] - - -

Le fichier de correspondances contient les cibles de - redirection associées à chaque Referer, ou, si nous voulons - simplement rediriger les requêtes vers leur Referer, un "-" est - inscrit dans le fichier de correspondances :

- - -## -## 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/ - - -
-
- -
- - -
diff --git a/docs/manual/rewrite/access.xml.ja b/docs/manual/rewrite/access.xml.ja deleted file mode 100644 index 28a986b264..0000000000 --- a/docs/manual/rewrite/access.xml.ja +++ /dev/null @@ -1,301 +0,0 @@ - - - - - - - - - Rewrite - -mod_rewrite を使ったアクセス制御 - - - -

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

- -これらの例の多くは、特定のサーバ設定ではそのまま -動作しないことに注意してください。そのため、単にコピー&ペーストするのではなく、 -内容を理解することが重要です。 - -
-モジュールドキュメント -mod_rewrite 入門 -リダイレクトとリマッピング - -バーチャルホスト -プロキシ -RewriteMap の使用 -高度なテクニック -mod_rewrite を使わない場合 - -
- - 画像の "直リンク" の禁止 - -
-
説明:
- -
-

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

-
- -
解決方法:
- -
-

このテクニックは 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> - -
-
- -
- -
- - ロボットのブロック - -
-
説明:
- -
-

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

- -

ロボット排除の標準では、ウェブサイトのどの部分でロボットを - 除外したいかを指定する /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 - リクエストヘッダを変更するだけで簡単に回避できます。持続的な - 攻撃を受けている場合は、ファイアウォールなどのより上位のレベルで - ブロックすることを検討してください。 -

- -
- -
- -
- -
- - 拒否リストのホストの拒否 - -
-
説明:
- -
-

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] フラグを削除してください。 -

-
-
- -
- -
- - リファラに基づくデフレクタ - -
-
説明:
- -
-

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

-
- -
解決方法:
- -
-

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

- - -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/ - - -
-
- -
- -
diff --git a/docs/manual/rewrite/access.xml.ko b/docs/manual/rewrite/access.xml.ko deleted file mode 100644 index b5380e4d0e..0000000000 --- a/docs/manual/rewrite/access.xml.ko +++ /dev/null @@ -1,306 +0,0 @@ - - - - - - - - - Rewrite - -mod_rewrite를 사용한 접근 제어 - - - -

이 문서는 mod_rewrite -참조 문서를 보충합니다. -mod_rewrite를 사용하여 다양한 자원에 대한 -접근을 제어하는 방법과 기타 관련 기술을 설명합니다. -여기에는 mod_rewrite의 일반적인 사용 예제가 -많이 포함되어 있으며, 각각이 어떻게 작동하는지에 대한 -자세한 설명이 있습니다.

- -이 예제들 중 많은 것이 특정 서버 설정에서 -그대로 작동하지 않을 수 있으므로, 단순히 예제를 복사하여 -설정에 붙여넣기보다는 이해하는 것이 중요합니다. - -
-모듈 문서 -mod_rewrite 소개 -리다이렉션과 재매핑 - -가상 호스트 -프록시 -RewriteMap 사용하기 -고급 기술 -mod_rewrite를 사용하지 말아야 할 경우 - -
- - 이미지 "핫링킹" 금지 - -
-
설명:
- -
-

다음 기술은 다른 사이트가 여러분의 이미지를 - 자신의 페이지에 인라인으로 포함하는 것을 금지합니다. - 이 행위는 흔히 "핫링킹"이라고 하며, - 여러분의 대역폭이 다른 사이트의 콘텐츠를 제공하는 데 - 사용되는 결과를 초래합니다.

-
- -
해결책:
- -
-

이 기술은 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> - -
-
- -
- -
- - 로봇 차단 - -
-
설명:
- -
-

이 레시피에서는 특정 로봇 또는 사용자 에이전트의 - 지속적인 요청을 차단하는 방법을 논의합니다.

- -

로봇 배제 표준은 /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 - 요청 헤더를 수정하는 것만으로도 쉽게 우회할 수 있습니다. - 지속적인 공격을 받고 있다면, 방화벽과 같은 상위 수준에서 - 차단하는 것을 고려해야 합니다. -

- -
- -
- -
- -
- - 거부 목록의 호스트 차단 - -
-
설명:
- -
-

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] 플래그를 제거해야 - 합니다. -

-
-
- -
- -
- - 리퍼러 기반 디플렉터 - -
-
설명:
- -
-

요청이 온 리퍼러에 따라 요청을 리다이렉트하며, - 리퍼러별로 다른 대상을 지정합니다.

-
- -
해결책:
- -
-

다음 규칙 세트는 맵 파일을 사용하여 각 리퍼러를 - 리다이렉션 대상과 연결합니다.

- - -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/ - - -
-
- -
- -
diff --git a/docs/manual/rewrite/access.xml.meta b/docs/manual/rewrite/access.xml.meta deleted file mode 100644 index 57530c4eaf..0000000000 --- a/docs/manual/rewrite/access.xml.meta +++ /dev/null @@ -1,19 +0,0 @@ - - - - - access - /rewrite/ - .. - - - de - en - es - fr - ja - ko - tr - zh-cn - - diff --git a/docs/manual/rewrite/access.xml.tr b/docs/manual/rewrite/access.xml.tr deleted file mode 100644 index 14bb92ce24..0000000000 --- a/docs/manual/rewrite/access.xml.tr +++ /dev/null @@ -1,308 +0,0 @@ - - - - - - - - - Rewrite - -Erişim Denetimi için mod_rewrite Kullanımı - - - -

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. - -
-Modül belgeleri -mod_rewrite'a giriş -Yeniden yönlendirme ve yeniden eşleme - -Sanal konaklar -Vekil kullanımı -RewriteMap Kullanımı -İleri teknikler -mod_rewrite kullanılmaması gereken durumlar - -
- - 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> - -
-
- -
- -
- - 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. -

- -
- -
- -
- -
- - 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. -

-
-
- -
- -
- - 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/ - - -
-
- -
- -
diff --git a/docs/manual/rewrite/access.xml.zh-cn b/docs/manual/rewrite/access.xml.zh-cn deleted file mode 100644 index f114964e41..0000000000 --- a/docs/manual/rewrite/access.xml.zh-cn +++ /dev/null @@ -1,283 +0,0 @@ - - - - - - - - - Rewrite - -使用 mod_rewrite 控制访问 - - - -

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

- -请注意,这些示例中的许多不会在你的特定服务器配置中直接生效, -因此理解它们非常重要,而不仅仅是将示例复制粘贴到你的配置中。 - -
-模块文档 -mod_rewrite 简介 -重定向和重映射 - -虚拟主机 -代理 -使用 RewriteMap -高级技术 -何时不使用 mod_rewrite - -
- - 禁止图片"盗链" - -
-
描述:
- -
-

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

-
- -
解决方案:
- -
-

此技术依赖于 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> - -
-
- -
- -
- - 阻止机器人 - -
-
描述:
- -
-

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

- -

机器人排除标准定义了一个文件 /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 请求头即可。如果你遭受持续攻击, - 应考虑在更高层级(如防火墙)进行阻止。 -

- -
- -
- -
- -
- - 拒绝列表中的主机 - -
-
描述:
- -
-

我们希望维护一个主机列表,类似于 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] 标志。 -

-
-
- -
- -
- - 基于 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/ - - -
-
- -
- -
diff --git a/docs/manual/rewrite/advanced.html b/docs/manual/rewrite/advanced.html deleted file mode 100644 index 5a176a4fd7..0000000000 --- a/docs/manual/rewrite/advanced.html +++ /dev/null @@ -1,33 +0,0 @@ -# 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 deleted file mode 100644 index 8abf8e5a34..0000000000 --- a/docs/manual/rewrite/advanced.html.de +++ /dev/null @@ -1,377 +0,0 @@ - - - - - -Fortgeschrittene Techniken mit mod_rewrite - Apache HTTP Server Version 2.5 - - - - - - - -
<-
-

Fortgeschrittene Techniken mit mod_rewrite

-
-

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

-
-
Diese Übersetzung ist möglicherweise - nicht mehr aktuell. Bitte prüfen Sie die englische Version auf - die neuesten Änderungen.
- - -

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 deleted file mode 100644 index 1595bf2ac9..0000000000 --- a/docs/manual/rewrite/advanced.html.en.utf8 +++ /dev/null @@ -1,77 +0,0 @@ - - - - - -Advanced Techniques with mod_rewrite - Apache HTTP Server Version 2.5 - - - - - - - -
<-
-

Advanced Techniques with mod_rewrite

-
-

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

-
- - -
This document has been deprecated. Its content has -been reorganized into the following topical documents, where it can be -found alongside related recipes and examples. This page will be removed -in a future version of this documentation.
- - - -
-
-
-

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

-
- \ No newline at end of file diff --git a/docs/manual/rewrite/advanced.html.es.utf8 b/docs/manual/rewrite/advanced.html.es.utf8 deleted file mode 100644 index 5afc744f9d..0000000000 --- a/docs/manual/rewrite/advanced.html.es.utf8 +++ /dev/null @@ -1,371 +0,0 @@ - - - - - -Técnicas avanzadas con mod_rewrite - Servidor HTTP Apache Versión 2.5 - - - - - - - -
<-
-

Técnicas avanzadas con mod_rewrite

-
-

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

-
-
Esta traducción podría estar - obsoleta. Consulte la versión en inglés de la - documentación para comprobar si se han producido cambios - recientemente.
- - -

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 deleted file mode 100644 index 0f615701dc..0000000000 --- a/docs/manual/rewrite/advanced.html.fr.utf8 +++ /dev/null @@ -1,389 +0,0 @@ - - - - - -Techniques avancées avec mod_rewrite - Serveur HTTP Apache Version 2.5 - - - - - - - -
<-
-

Techniques avancées avec mod_rewrite

-
-

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 complète la documentation de référence du - module mod_rewrite. Il présente un certain nombre - de techniques avancées quant à - l'utilisation de mod_rewrite.

- - - -
Notez que la plupart des exemples ne fonctionneront -pas en l'état dans la configuration particulière de votre serveur ; il -est donc important de bien comprendre leur fonctionnement, plutôt que de -simplement les copier/coller dans votre configuration.
- -
- -
top
-
-

Distribution de la charge entre plusieurs serveurs - d'arrière-plan en fonction de l'adresse IP

- - - -
-
Description :
- -
-

La fragmentation ou "sharding" est une technique courante de - distribution de la charge du serveur ou de l'espace de stockage. - Quand on utilise cette méthode, un serveur frontal utilise l'URL - pour répartir de manière appropriée les utilisateurs et objets - entre différents serveurs d'arrière-plan.

-
- -
Solution :
- -
-

On maintient une table de correspondance entre utilisateurs et - serveurs cibles dans des fichiers externes. Ces derniers se - présentent comme suit :

- -

-utilisateur1 serveur_physique_utilisateur1
-utilisateur2 serveur_physique_utilisateur2
-# etc ... -

- -

Tout ceci est enregistré dans un fichier - correspondances-utilisateurs-serveurs. Le but est de - faire correspondre

- -

-/u/utilisateur1/chemin -

- -

avec

- -

-http://serveur_physique_utilisateur1/u/utilisateur/chemin -

- -

il n'est ainsi pas nécessaire que tous les chemins URL soient - valides sur tous les serveurs physiques d'arrière-plan. Le jeu de - règles suivant fait tout ceci pour nous, en s'appuyant sur les - fichiers de correspondances, en supposant que serveur0 est un - serveur par défaut qui sera utilisé lorsqu'un utilisateur ne - possèdera pas d'entrée dans la table de correspondances :

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

Voir la documentation de RewriteMap et le RewriteMap HowTo pour une description plus - approfondie de la syntaxe de cette directive.

- -
top
-
-

Régéneration de contenu à la volée

- - - -
-
Description :
- -
-

Nous voulons générer du contenu de manière dynamique, mais le - conserver de manière statique lorsqu'il a été généré. La règle - suivante vérifie l'existence du fichier statique, et le génère - s'il est absent. Les fichiers statiques peuvent être supprimés - périodiquement si on le désire (par exemple via cron), et seront - régénérés à la demande.

-
- -
Solution :
- -
- A cet effet, on utilise le jeu de règles suivant : - -
# Cet exemple n'est valable que dans un contexte de répertoire
-RewriteCond "%{REQUEST_URI}"   !-U
-RewriteRule "^(.+)\.html$"          "/regenerate_page.cgi"   [PT,L]
- - -

L'opérateur -U permet de déterminer si la chaîne - de test (dans ce cas REQUEST_URI) est une URL valide. - Pour ce faire, il utilise une sous-requête. Si cette sous-requête - échoue, ou en d'autres termes, si la ressource demandée n'existe pas, - cette règle invoque le programme CGI - /regenerate_page.cgi qui génère la ressource - demandée et la sauvegarde dans le répertoire des documents, de - façon à ce qu'une copie statique puisse être servie lors d'une - demande ultérieure.

- -

De cette façon, les documents qui ne sont pas mis à jour - régulièrement peuvent être servis sous une forme statique. Si ces - documents doivent être réactualisés, on peut les supprimer du - répertoire des documents, et ils seront ainsi régénérés à la - prochaine demande.

-
-
- -
top
-
-

Répartition de charge

- - - -
-
Description :
- -
-

Nous voulons répartir la charge de manière aléatoire entre - plusieurs serveurs en utilisant mod_rewrite.

-
- -
Solution :
- -
-

Pour y parvenir, nous allons utiliser la directive RewriteMap et une liste de - serveurs.

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

liste-serveurs.txt contiendra la liste des serveurs :

- -

-## liste-serveurs.txt
-
-serveurs un.example.com|deux.example.com|trois.example.com
-

- -

Si vous voulez qu'un serveur se voit confier d'avantage de charge que -les autres, faites le figurer plusieurs fois dans la liste.

- -
- -
Discussion
-
-

Apache possède un module de répartition de charge - -mod_proxy_balancer - beaucoup plus souple et présentant -plus de fonctionnalités dans ce domaine que mod_rewrite.

-
-
- -
top
-
-

Répertoires Home structurés

- - - -
-
Description :
- -
-

Certains sites avec des milliers d'utilisateurs organisent - les répertoires utilisateurs de manière structurée, c'est à - dire que chaque répertoire utilisateur se trouve dans un - sous-répertoire dont le nom commence (par exemple) par le - premier caractère du nom de l'utilisateur. Ainsi, - /~larry/chemin correspond à - /home/l/larry/public_html/chemin, alors - que /~waldo/chemin correspond à - /home/w/waldo/public_html/chemin.

-
- -
Solution :
- -
-

On utilise le jeu de règles suivant pour développer les - URLs avec tilde selon l'organisation structurée précédente.

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

Redirection des ancrages

- - - -
-
Description :
- -
-

Par défaut, la redirection vers un ancrage HTML ne fonctionne - pas, car mod_rewrite échappe le caractère # en le - transformant en %23, ce qui rend la redirection - inopérante.

-
- -
Solution :
- -
-

On utilise le drapeau [NE] dans la règle - RewriteRule. NE signifie "No Escape". -

-
- -
Discussion :
-
Cette technique fonctionne bien entendu pour tout autre - caractère spécial que mod_rewrite, par défaut, code pour insertion - dans une URL.
-
- -
top
-
-

Réécriture dépendant de l'heure

- - - -
-
Description :
- -
-

Nous voulons servir des contenus différents selon l'heure du - jour en utilisant mod_rewrite.

-
- -
Solution :
- -
-

Il existe de nombreuses variables nommées - TIME_xxx utilisables dans les conditions de - réécriture. Utilisées en conjonction avec les modèles de - comparaison lexicographique spéciaux <STRING, - >STRING et =STRING, elles - permettent d'effectuer des redirections dépendant de - l'heure :

- -
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"
- - -

Avec cet exemple, l'URL foo.html renvoie - le contenu de foo.jour.html durant le - créneau horaire 07:01-18:59, et le contenu de - foo.nuit.html le reste du temps.

- -
mod_cache, les mandataires - intermédiaires et les navigateurs peuvent chacun mettre en cache - les réponses et ainsi afficher une des deux pages en dehors de - la fenêtre de temps configurée. On peut utiliser - mod_expires pour contourner ce problème. Il est - cependant bien plus commode de servir un contenu dynamique, et - de le personnaliser en fonction de l'heure du jour.
-
- -
top
-
-

Définir des variables d'environnement en fonction de - certaines parties de l'URL

- - - -
-
Description :
- -
-

Parfois, nous voulons conserver une certaine forme de statut - lorsqu'une réécriture a eu lieu. Par exemple, vous souhaitez - consigner le fait que cette réécriture a eu lieu, et vous servir - plus tard de cette information pour déterminer si une requête était - concernée par cette réécriture. Pour y parvenir, on peut utiliser - une variable d'environnement.

-
- -
Solution :
- -
-

Utiliser le drapeau [E] pour définir une variable - d'environnement.

- -
RewriteEngine on
-RewriteRule   "^/cheval/(.*)"   "/poney/$1" [E=rewritten:1]
- - -

Plus loin dans votre jeu de règles, vous pouvez vérifier le - contenu de cette variable d'environnement via une directive - RewriteCond :

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

Notez que les variables d'environnement ne survivent pas à une - redirection externe. Vous devez alors utiliser le drapeau [CO] pour définir - un cookie. Pour les redirections de niveau répertoire et htaccess où la - substitution finale est traitée en tant que redirection interne, les - variables d'environnement du tour de réécriture précédent sont préfixées par - "REDIRECT_".

- -
-
- -
-
-

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

-
- \ No newline at end of file diff --git a/docs/manual/rewrite/advanced.html.ja.utf8 b/docs/manual/rewrite/advanced.html.ja.utf8 deleted file mode 100644 index 6d60401408..0000000000 --- a/docs/manual/rewrite/advanced.html.ja.utf8 +++ /dev/null @@ -1,374 +0,0 @@ - - - - - -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
-# ... 以下同様 -

- -

これを 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 deleted file mode 100644 index 5d94f9941b..0000000000 --- a/docs/manual/rewrite/advanced.html.ko.euc-kr +++ /dev/null @@ -1,369 +0,0 @@ - - - - - -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 deleted file mode 100644 index 8053c62033..0000000000 --- a/docs/manual/rewrite/advanced.html.tr.utf8 +++ /dev/null @@ -1,372 +0,0 @@ - - - - - -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 çeviri güncel olmayabilir. Son değişiklikler için İngilizce sürüm geçerlidir.
- - -

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 deleted file mode 100644 index 412accaaf8..0000000000 --- a/docs/manual/rewrite/advanced.html.zh-cn.utf8 +++ /dev/null @@ -1,346 +0,0 @@ - - - - - -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/advanced.xml b/docs/manual/rewrite/advanced.xml deleted file mode 100644 index 9895a1d8fd..0000000000 --- a/docs/manual/rewrite/advanced.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - Rewrite - -Advanced Techniques with mod_rewrite - - - -This document has been deprecated. Its content has -been reorganized into the following topical documents, where it can be -found alongside related recipes and examples. This page will be removed -in a future version of this documentation. - - - - - - diff --git a/docs/manual/rewrite/advanced.xml.de b/docs/manual/rewrite/advanced.xml.de deleted file mode 100644 index 2f5e3672c8..0000000000 --- a/docs/manual/rewrite/advanced.xml.de +++ /dev/null @@ -1,366 +0,0 @@ - - - - - - - - - Rewrite - -Fortgeschrittene Techniken mit mod_rewrite - - - -

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. - -
-Moduldokumentation -Einführung in mod_rewrite -Umleitung und Neuzuordnung -Zugriffskontrolle -Virtuelle Hosts -Proxying -Verwendung von RewriteMap - -Wann man mod_rewrite nicht verwenden sollte - -
- - 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.

- -
- -
- - 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.

-
-
- -
- -
- - 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.

-
-
- -
- -
- - 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" - -
-
- -
- -
- - 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.
-
- -
- -
- - 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. - -
-
- -
- -
- - 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.

- -
-
- -
- -
\ No newline at end of file diff --git a/docs/manual/rewrite/advanced.xml.es b/docs/manual/rewrite/advanced.xml.es deleted file mode 100644 index d512506e16..0000000000 --- a/docs/manual/rewrite/advanced.xml.es +++ /dev/null @@ -1,358 +0,0 @@ - - - - - - - - - Rewrite - -Técnicas avanzadas con mod_rewrite - - - -

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. - -
-Documentación del módulo -Introducción a mod_rewrite -Redirección y remapeo -Control de acceso -Hosts virtuales -Proxy -Uso de RewriteMap - -Cuándo no usar mod_rewrite - -
- - 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.

- -
- -
- - 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.

-
-
- -
- -
- - 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.

-
-
- -
- -
- - 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" - -
-
- -
- -
- - 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.
-
- -
- -
- - 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. - -
-
- -
- -
- - 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_".

- -
-
- -
- -
diff --git a/docs/manual/rewrite/advanced.xml.fr b/docs/manual/rewrite/advanced.xml.fr deleted file mode 100644 index 54d241f137..0000000000 --- a/docs/manual/rewrite/advanced.xml.fr +++ /dev/null @@ -1,381 +0,0 @@ - - - - - - - - - - - Rewrite - -Techniques avancées avec mod_rewrite - - - -

Ce document complète la documentation de référence du - module mod_rewrite. Il présente un certain nombre - de techniques avancées quant à - l'utilisation de mod_rewrite.

- - - -Notez que la plupart des exemples ne fonctionneront -pas en l'état dans la configuration particulière de votre serveur ; il -est donc important de bien comprendre leur fonctionnement, plutôt que de -simplement les copier/coller dans votre configuration. - -
-Documentation du module -Introduction à mod_rewrite -Redirection et remise en -correspondance -Contrôler l'accès -serveurs virtuels -serveurs mandataires -Utilisation de RewriteMap - -Quand ne pas utiliser mod_rewrite - -
- - Distribution de la charge entre plusieurs serveurs - d'arrière-plan en fonction de l'adresse IP - -
-
Description :
- -
-

La fragmentation ou "sharding" est une technique courante de - distribution de la charge du serveur ou de l'espace de stockage. - Quand on utilise cette méthode, un serveur frontal utilise l'URL - pour répartir de manière appropriée les utilisateurs et objets - entre différents serveurs d'arrière-plan.

-
- -
Solution :
- -
-

On maintient une table de correspondance entre utilisateurs et - serveurs cibles dans des fichiers externes. Ces derniers se - présentent comme suit :

- - -utilisateur1 serveur_physique_utilisateur1
-utilisateur2 serveur_physique_utilisateur2
-# etc ... -
- -

Tout ceci est enregistré dans un fichier - correspondances-utilisateurs-serveurs. Le but est de - faire correspondre

- - -/u/utilisateur1/chemin - - -

avec

- - -http://serveur_physique_utilisateur1/u/utilisateur/chemin - - -

il n'est ainsi pas nécessaire que tous les chemins URL soient - valides sur tous les serveurs physiques d'arrière-plan. Le jeu de - règles suivant fait tout ceci pour nous, en s'appuyant sur les - fichiers de correspondances, en supposant que serveur0 est un - serveur par défaut qui sera utilisé lorsqu'un utilisateur ne - possèdera pas d'entrée dans la table de correspondances :

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

Voir la documentation de RewriteMap et le RewriteMap HowTo pour une description plus - approfondie de la syntaxe de cette directive.

- -
- -
- - Régéneration de contenu à la volée - -
-
Description :
- -
-

Nous voulons générer du contenu de manière dynamique, mais le - conserver de manière statique lorsqu'il a été généré. La règle - suivante vérifie l'existence du fichier statique, et le génère - s'il est absent. Les fichiers statiques peuvent être supprimés - périodiquement si on le désire (par exemple via cron), et seront - régénérés à la demande.

-
- -
Solution :
- -
- A cet effet, on utilise le jeu de règles suivant : - - -# Cet exemple n'est valable que dans un contexte de répertoire -RewriteCond "%{REQUEST_URI}" !-U -RewriteRule "^(.+)\.html$" "/regenerate_page.cgi" [PT,L] - - -

L'opérateur -U permet de déterminer si la chaîne - de test (dans ce cas REQUEST_URI) est une URL valide. - Pour ce faire, il utilise une sous-requête. Si cette sous-requête - échoue, ou en d'autres termes, si la ressource demandée n'existe pas, - cette règle invoque le programme CGI - /regenerate_page.cgi qui génère la ressource - demandée et la sauvegarde dans le répertoire des documents, de - façon à ce qu'une copie statique puisse être servie lors d'une - demande ultérieure.

- -

De cette façon, les documents qui ne sont pas mis à jour - régulièrement peuvent être servis sous une forme statique. Si ces - documents doivent être réactualisés, on peut les supprimer du - répertoire des documents, et ils seront ainsi régénérés à la - prochaine demande.

-
-
- -
- -
- - Répartition de charge - -
-
Description :
- -
-

Nous voulons répartir la charge de manière aléatoire entre - plusieurs serveurs en utilisant mod_rewrite.

-
- -
Solution :
- -
-

Pour y parvenir, nous allons utiliser la directive RewriteMap et une liste de - serveurs.

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

liste-serveurs.txt contiendra la liste des serveurs :

- - -## liste-serveurs.txt
-
-serveurs un.example.com|deux.example.com|trois.example.com
-
- -

Si vous voulez qu'un serveur se voit confier d'avantage de charge que -les autres, faites le figurer plusieurs fois dans la liste.

- -
- -
Discussion
-
-

Apache possède un module de répartition de charge - -mod_proxy_balancer - beaucoup plus souple et présentant -plus de fonctionnalités dans ce domaine que mod_rewrite.

-
-
- -
- -
- - Répertoires Home structurés - -
-
Description :
- -
-

Certains sites avec des milliers d'utilisateurs organisent - les répertoires utilisateurs de manière structurée, c'est à - dire que chaque répertoire utilisateur se trouve dans un - sous-répertoire dont le nom commence (par exemple) par le - premier caractère du nom de l'utilisateur. Ainsi, - /~larry/chemin correspond à - /home/l/larry/public_html/chemin, alors - que /~waldo/chemin correspond à - /home/w/waldo/public_html/chemin.

-
- -
Solution :
- -
-

On utilise le jeu de règles suivant pour développer les - URLs avec tilde selon l'organisation structurée précédente.

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

Par défaut, la redirection vers un ancrage HTML ne fonctionne - pas, car mod_rewrite échappe le caractère # en le - transformant en %23, ce qui rend la redirection - inopérante.

-
- -
Solution :
- -
-

On utilise le drapeau [NE] dans la règle - RewriteRule. NE signifie "No Escape". -

-
- -
Discussion :
-
Cette technique fonctionne bien entendu pour tout autre - caractère spécial que mod_rewrite, par défaut, code pour insertion - dans une URL.
-
- -
- -
- - Réécriture dépendant de l'heure - -
-
Description :
- -
-

Nous voulons servir des contenus différents selon l'heure du - jour en utilisant mod_rewrite.

-
- -
Solution :
- -
-

Il existe de nombreuses variables nommées - TIME_xxx utilisables dans les conditions de - réécriture. Utilisées en conjonction avec les modèles de - comparaison lexicographique spéciaux <STRING, - >STRING et =STRING, elles - permettent d'effectuer des redirections dépendant de - l'heure :

- - -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" - - -

Avec cet exemple, l'URL foo.html renvoie - le contenu de foo.jour.html durant le - créneau horaire 07:01-18:59, et le contenu de - foo.nuit.html le reste du temps.

- - mod_cache, les mandataires - intermédiaires et les navigateurs peuvent chacun mettre en cache - les réponses et ainsi afficher une des deux pages en dehors de - la fenêtre de temps configurée. On peut utiliser - mod_expires pour contourner ce problème. Il est - cependant bien plus commode de servir un contenu dynamique, et - de le personnaliser en fonction de l'heure du jour.
-
- -
- -
- - Définir des variables d'environnement en fonction de - certaines parties de l'URL - -
-
Description :
- -
-

Parfois, nous voulons conserver une certaine forme de statut - lorsqu'une réécriture a eu lieu. Par exemple, vous souhaitez - consigner le fait que cette réécriture a eu lieu, et vous servir - plus tard de cette information pour déterminer si une requête était - concernée par cette réécriture. Pour y parvenir, on peut utiliser - une variable d'environnement.

-
- -
Solution :
- -
-

Utiliser le drapeau [E] pour définir une variable - d'environnement.

- - -RewriteEngine on -RewriteRule "^/cheval/(.*)" "/poney/$1" [E=rewritten:1] - - -

Plus loin dans votre jeu de règles, vous pouvez vérifier le - contenu de cette variable d'environnement via une directive - RewriteCond :

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

Notez que les variables d'environnement ne survivent pas à une - redirection externe. Vous devez alors utiliser le drapeau [CO] pour définir - un cookie. Pour les redirections de niveau répertoire et htaccess où la - substitution finale est traitée en tant que redirection interne, les - variables d'environnement du tour de réécriture précédent sont préfixées par - "REDIRECT_".

- -
-
- -
- -
diff --git a/docs/manual/rewrite/advanced.xml.ja b/docs/manual/rewrite/advanced.xml.ja deleted file mode 100644 index 43ec7926a6..0000000000 --- a/docs/manual/rewrite/advanced.xml.ja +++ /dev/null @@ -1,361 +0,0 @@ - - - - - - - - - Rewrite - -mod_rewrite の高度なテクニック - - - -

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

- - - -これらの例の多くは、特定のサーバ設定ではそのまま -動作しないことに注意してください。そのため、単にコピー&ペーストするのではなく、 -内容を理解することが重要です。 - -
-モジュールドキュメント -mod_rewrite 入門 -リダイレクトとリマッピング -アクセス制御 -バーチャルホスト -プロキシ -RewriteMap の使用 - -mod_rewrite を使わない場合 - -
- - 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 ハウツー - を参照してください。

- -
- -
- - オンザフライのコンテンツ再生成 - -
-
説明:
- -
-

コンテンツを動的に生成したいが、一度生成したら静的に - 保存したいとします。このルールは静的ファイルの存在を確認し、 - 存在しない場合は生成します。静的ファイルは必要に応じて - (例えば 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 - を呼び出し、リクエストされたリソースを生成してドキュメント - ディレクトリに保存します。これにより、次回リクエストされたときに - 静的コピーを提供できます。

- -

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

-
-
- -
- -
- - ロードバランシング - -
-
説明:
- -
-

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 で構築できるものよりもはるかに柔軟で -機能豊富です。

-
-
- -
- -
- - 構造化ユーザディレクトリ - -
-
説明:
- -
-

数千人のユーザを持つサイトの中には、構造化されたホームディレクトリ - レイアウトを使用するものがあります。つまり、各ホームディレクトリは - ユーザ名の最初の文字で始まるサブディレクトリにあります。例えば、 - /~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" - -
-
- -
- -
- - アンカーのリダイレクト - -
-
説明:
- -
-

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

-
- -
解決方法:
- -
-

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

-
- -
議論:
-
このテクニックは、mod_rewrite がデフォルトで - URL エンコードする他の特殊文字にも適用できます。
-
- -
- -
- - 時間に依存する書き換え - -
-
説明:
- -
-

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 を使用してこの影響を制御できます。 - もちろん、コンテンツを動的に提供し、時間帯に基づいて - カスタマイズする方がはるかに良いでしょう。 - -
-
- -
- -
- - URL の部分に基づく環境変数の設定 - -
-
説明:
- -
-

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

-
- -
解決方法:
- -
-

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

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

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

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

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

- -
-
- -
- -
diff --git a/docs/manual/rewrite/advanced.xml.ko b/docs/manual/rewrite/advanced.xml.ko deleted file mode 100644 index cf1f890806..0000000000 --- a/docs/manual/rewrite/advanced.xml.ko +++ /dev/null @@ -1,352 +0,0 @@ - - - - - - - - - Rewrite - -mod_rewrite 고급 기술 - - - -

이 문서는 mod_rewrite -참조 문서를 보충합니다. -mod_rewrite를 사용한 몇 가지 고급 기술을 -제공합니다.

- -이 예제들 중 많은 것이 특정 서버 설정에서 -그대로 작동하지 않을 수 있으므로, 단순히 예제를 복사하여 -설정에 붙여넣기보다는 이해하는 것이 중요합니다. - -
-모듈 문서 -mod_rewrite 소개 -리다이렉션과 재매핑 -접근 제어 -가상 호스트 -프록시 -RewriteMap 사용하기 - -mod_rewrite를 사용하지 말아야 할 경우 - -
- - 여러 백엔드에 대한 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 사용법을 - 참조하십시오.

- -
- -
- - 실시간 콘텐츠 재생성 - -
-
설명:
- -
-

콘텐츠를 동적으로 생성하되, 한 번 생성되면 - 정적으로 저장하고자 합니다. 이 규칙은 정적 파일의 - 존재를 확인하고, 없으면 생성합니다. 정적 파일은 - 원하는 경우 (예를 들어 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를 호출하여 - 요청된 자원을 생성하고 문서 디렉토리에 저장하므로, - 다음에 요청될 때 정적 복사본을 제공할 수 있습니다.

- -

이 방식으로 자주 업데이트되지 않는 문서를 정적 - 형태로 제공할 수 있습니다. 문서를 새로고침해야 하는 - 경우 문서 디렉토리에서 삭제할 수 있으며, 다음에 - 요청될 때 재생성됩니다.

-
-
- -
- -
- - 부하 분산 - -
-
설명:
- -
-

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를 사용하여 조합할 수 있는 -어떤 것보다 훨씬 더 유연하고 기능이 풍부합니다.

-
-
- -
- -
- - 구조화된 사용자 디렉토리 - -
-
설명:
- -
-

수천 명의 사용자가 있는 일부 사이트는 구조화된 - 홈 디렉토리 레이아웃을 사용합니다. 즉, 각 - 홈 디렉토리는 사용자 이름의 첫 번째 문자로 시작하는 - 하위 디렉토리에 있습니다. 예를 들어 - /~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" - -
-
- -
- -
- - 앵커 리다이렉트 - -
-
설명:
- -
-

기본적으로 HTML 앵커로의 리다이렉트는 작동하지 - 않습니다. mod_rewrite가 # - 문자를 이스케이프하여 %23으로 변환하기 - 때문입니다. 이로 인해 리다이렉션이 중단됩니다.

-
- -
해결책:
- -
-

RewriteRule에 [NE] - 플래그를 사용합니다. NE는 No Escape를 의미합니다.

-
- -
토론:
-
이 기술은 mod_rewrite가 기본적으로 - URL 인코딩하는 다른 특수 문자에도 물론 적용됩니다.
-
- -
- -
- - 시간 기반 재작성 - -
-
설명:
- -
-

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를 사용하여 이 효과를 - 제어할 수 있습니다. 물론 콘텐츠를 동적으로 제공하고 - 시간대에 따라 사용자 정의하는 것이 훨씬 좋습니다. - -
-
- -
- -
- - URL 부분에 따른 환경 변수 설정 - -
-
설명:
- -
-

때때로 재작성을 수행할 때 어떤 종류의 상태를 - 유지하고 싶을 수 있습니다. 예를 들어, 해당 재작성을 - 수행했다는 것을 기록하여 나중에 요청이 해당 재작성을 - 통해 왔는지 확인하고 싶을 수 있습니다. 이를 수행하는 - 한 가지 방법은 환경 변수를 설정하는 것입니다.

-
- -
해결책:
- -
-

[E] 플래그를 사용하여 환경 변수를 설정합니다.

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

나중에 규칙 세트에서 RewriteCond를 사용하여 - 이 환경 변수를 확인할 수 있습니다:

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

환경 변수는 외부 리다이렉트에서 유지되지 않는다는 - 점에 유의하십시오. 쿠키를 설정하려면 [CO] 플래그를 - 사용하는 것을 고려할 수 있습니다. 디렉토리별 및 - htaccess 재작성에서 최종 치환이 내부 리다이렉트로 - 처리되는 경우, 이전 라운드의 재작성에서 온 환경 변수는 - "REDIRECT_" 접두사가 붙습니다.

- -
-
- -
- -
diff --git a/docs/manual/rewrite/advanced.xml.meta b/docs/manual/rewrite/advanced.xml.meta deleted file mode 100644 index fb751b1222..0000000000 --- a/docs/manual/rewrite/advanced.xml.meta +++ /dev/null @@ -1,19 +0,0 @@ - - - - - advanced - /rewrite/ - .. - - - de - en - es - fr - ja - ko - tr - zh-cn - - diff --git a/docs/manual/rewrite/advanced.xml.tr b/docs/manual/rewrite/advanced.xml.tr deleted file mode 100644 index f96d16a89b..0000000000 --- a/docs/manual/rewrite/advanced.xml.tr +++ /dev/null @@ -1,362 +0,0 @@ - - - - - - - - - Rewrite - -mod_rewrite ile İleri Teknikler - - - -

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. - -
-Modül belgeleri -mod_rewrite'a giriş -Yeniden yönlendirme ve yeniden eşleme -Erişim denetimi -Sanal konaklar -Vekil kullanımı -RewriteMap Kullanımı - -mod_rewrite kullanılmaması gereken durumlar - -
- - 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.

- -
- -
- - 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.

-
-
- -
- -
- - 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.

-
-
- -
- -
- - 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" - -
-
- -
- -
- - Ç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.
-
- -
- -
- - 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. - -
-
- -
- -
- - 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.

- -
-
- -
- -
diff --git a/docs/manual/rewrite/advanced.xml.zh-cn b/docs/manual/rewrite/advanced.xml.zh-cn deleted file mode 100644 index 5580d02cac..0000000000 --- a/docs/manual/rewrite/advanced.xml.zh-cn +++ /dev/null @@ -1,336 +0,0 @@ - - - - - - - - - Rewrite - -mod_rewrite 高级技术 - - - -

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

- - - -请注意,这些示例中的许多不会在你的特定服务器配置中直接生效, -因此理解它们非常重要,而不仅仅是将示例复制粘贴到你的配置中。 - -
-模块文档 -mod_rewrite 简介 -重定向和重映射 -访问控制 -虚拟主机 -代理 -使用 RewriteMap - -何时不使用 mod_rewrite - -
- - 基于 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 指南 - 以了解此指令语法的更多讨论。

- -
- -
- - 即时内容再生成 - -
-
描述:
- -
-

我们希望动态生成内容,但一旦生成就将其静态存储。 - 此规则将检查静态文件是否存在,如果不存在,则生成它。 - 静态文件可以定期删除(例如通过 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,该程序生成请求的资源并将其保存到 - 文档目录中,这样下次请求时就可以提供静态副本了。

- -

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

-
-
- -
- -
- - 负载均衡 - -
-
描述:
- -
-

我们希望使用 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 拼凑出来的任何方案都更加灵活和功能丰富。

-
-
- -
- -
- - 结构化用户目录 - -
-
描述:
- -
-

一些拥有数千用户的站点使用结构化的主目录布局, - 即每个主目录位于一个子目录中, - 该子目录以用户名的第一个字符开头。因此, - /~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" - -
-
- -
- -
- - 重定向锚点 - -
-
描述:
- -
-

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

-
- -
解决方案:
- -
-

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

-
- -
讨论:
-
此技术当然也适用于 mod_rewrite - 默认会进行 URL 编码的其他特殊字符。
-
- -
- -
- - 基于时间的重写 - -
-
描述:
- -
-

我们希望使用 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 来控制此效果。 - 当然,动态提供内容并根据时间自定义它是更好的方式。 - -
-
- -
- -
- - 根据 URL 部分设置环境变量 - -
-
描述:
- -
-

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

-
- -
解决方案:
- -
-

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

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

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

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

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

- -
-
- -
- -
diff --git a/docs/manual/rewrite/proxy.html b/docs/manual/rewrite/proxy.html deleted file mode 100644 index f089b5ec5b..0000000000 --- a/docs/manual/rewrite/proxy.html +++ /dev/null @@ -1,33 +0,0 @@ -# GENERATED FROM XML -- DO NOT EDIT - -URI: proxy.html.de -Content-Language: de -Content-type: text/html; charset=ISO-8859-1 - -URI: proxy.html.en.utf8 -Content-Language: en -Content-type: text/html; charset=UTF-8 - -URI: proxy.html.es.utf8 -Content-Language: es -Content-type: text/html; charset=UTF-8 - -URI: proxy.html.fr.utf8 -Content-Language: fr -Content-type: text/html; charset=UTF-8 - -URI: proxy.html.ja.utf8 -Content-Language: ja -Content-type: text/html; charset=UTF-8 - -URI: proxy.html.ko.euc-kr -Content-Language: ko -Content-type: text/html; charset=EUC-KR - -URI: proxy.html.tr.utf8 -Content-Language: tr -Content-type: text/html; charset=UTF-8 - -URI: proxy.html.zh-cn.utf8 -Content-Language: zh-cn -Content-type: text/html; charset=UTF-8 diff --git a/docs/manual/rewrite/proxy.html.de b/docs/manual/rewrite/proxy.html.de deleted file mode 100644 index b093bdc85e..0000000000 --- a/docs/manual/rewrite/proxy.html.de +++ /dev/null @@ -1,119 +0,0 @@ - - - - - -Verwendung von mod_rewrite für Proxying - Apache HTTP Server Version 2.5 - - - - - - - -
<-
-

Verwendung von mod_rewrite für Proxying

-
-

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

-
-
Diese Übersetzung ist möglicherweise - nicht mehr aktuell. Bitte prüfen Sie die englische Version auf - die neuesten Änderungen.
- - -

Dieses Dokument ergänzt die mod_rewrite -Referenzdokumentation. Es beschreibt, -wie man das [P]-Flag der RewriteRule verwendet, um Inhalte an einen anderen -Server weiterzuleiten. Es werden verschiedene Rezepte bereitgestellt, die -gängige Szenarien beschreiben.

- -
- -
top
-
-

Proxying von Inhalten mit mod_rewrite

- - - -
-
Beschreibung:
- -
-

- mod_rewrite bietet das [P]-Flag, mit dem URLs über - mod_proxy an einen anderen Server weitergeleitet werden - können. Hier werden zwei Beispiele gegeben. In einem Beispiel wird eine - URL direkt an einen anderen Server weitergeleitet und so ausgeliefert, - als wäre sie eine lokale URL. Im anderen Beispiel leiten wir fehlende - Inhalte an einen Backend-Server weiter.

-
- -
Lösung:
- -
-

Um eine URL einfach einem anderen Server zuzuordnen, verwenden - wir das [P]-Flag wie folgt:

- -
RewriteEngine  on
-RewriteBase    "/products/"
-RewriteRule    "^widget/(.*)$"  "http://product.example.com/widget/$1"  [P]
-ProxyPassReverse "/products/widget/" "http://product.example.com/widget/"
- - -

Im zweiten Beispiel leiten wir die Anfrage nur weiter, wenn wir - die Ressource nicht lokal finden können. Dies kann sehr nützlich sein, - wenn Sie von einem Server zu einem anderen migrieren und sich nicht - sicher sind, ob alle Inhalte bereits migriert wurden.

- -
RewriteCond "%{REQUEST_FILENAME}"       !-f
-RewriteCond "%{REQUEST_FILENAME}"       !-d
-RewriteRule "^/(.*)"                    "http://old.example.com/$1" [P]
-ProxyPassReverse "/" "http://old.example.com/"
- -
- -
Diskussion:
- -

In jedem Fall fügen wir eine ProxyPassReverse-Direktive hinzu, um - sicherzustellen, dass alle vom Backend ausgegebenen Umleitungen - korrekt an den Client weitergeleitet werden.

- -

Erwägen Sie, wann immer möglich, ProxyPass oder ProxyPassMatch anstelle von - mod_rewrite zu verwenden.

-
-
- -
-
-

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

-
- \ No newline at end of file diff --git a/docs/manual/rewrite/proxy.html.en.utf8 b/docs/manual/rewrite/proxy.html.en.utf8 deleted file mode 100644 index 4d987d1f5b..0000000000 --- a/docs/manual/rewrite/proxy.html.en.utf8 +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -Using mod_rewrite for Proxying - Apache HTTP Server Version 2.5 - - - - - - - -
<-
-

Using mod_rewrite for Proxying

-
-

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

-
- - -
This document has been deprecated. Its content has -been merged into the -When not to use mod_rewrite document, -since simple proxying is better accomplished using -ProxyPass. This page will be -removed in a future version of this documentation.
- -
-
-
-

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

-
- \ No newline at end of file diff --git a/docs/manual/rewrite/proxy.html.es.utf8 b/docs/manual/rewrite/proxy.html.es.utf8 deleted file mode 100644 index 69ffb99938..0000000000 --- a/docs/manual/rewrite/proxy.html.es.utf8 +++ /dev/null @@ -1,118 +0,0 @@ - - - - - -Uso de mod_rewrite para Proxy - Servidor HTTP Apache Versión 2.5 - - - - - - - -
<-
-

Uso de mod_rewrite para Proxy

-
-

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

-
-
Esta traducción podría estar - obsoleta. Consulte la versión en inglés de la - documentación para comprobar si se han producido cambios - recientemente.
- - -

Este documento complementa la mod_rewrite -documentación de referencia. Describe -cómo usar la bandera [P] de RewriteRule para hacer proxy de contenido a otro servidor. -Se proporcionan varias recetas que describen escenarios comunes.

- -
- -
top
-
-

Hacer proxy de contenido con mod_rewrite

- - - -
-
Descripción:
- -
-

- mod_rewrite proporciona la bandera [P], que permite pasar URLs, - a través de mod_proxy, a otro servidor. Aquí se dan dos ejemplos. En - un ejemplo, una URL se pasa directamente a otro servidor, y se sirve - como si fuera una URL local. En el otro ejemplo, hacemos proxy del - contenido faltante a un servidor backend.

-
- -
Solución:
- -
-

Para simplemente mapear una URL a otro servidor, usamos la bandera [P], de la - siguiente manera:

- -
RewriteEngine  on
-RewriteBase    "/products/"
-RewriteRule    "^widget/(.*)$"  "http://product.example.com/widget/$1"  [P]
-ProxyPassReverse "/products/widget/" "http://product.example.com/widget/"
- - -

En el segundo ejemplo, hacemos proxy de la solicitud solo si no podemos encontrar - el recurso localmente. Esto puede ser muy útil cuando está migrando - de un servidor a otro, y no está seguro de si todo el contenido - ha sido migrado todavía.

- -
RewriteCond "%{REQUEST_FILENAME}"       !-f
-RewriteCond "%{REQUEST_FILENAME}"       !-d
-RewriteRule "^/(.*)"                    "http://old.example.com/$1" [P]
-ProxyPassReverse "/" "http://old.example.com/"
- -
- -
Discusión:
- -

En cada caso, añadimos una directiva ProxyPassReverse para asegurar - que cualquier redirección emitida por el backend se pase correctamente al - cliente.

- -

Considere usar ProxyPass o ProxyPassMatch siempre que sea posible en - preferencia a mod_rewrite.

-
-
- -
-
-

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

-
- \ No newline at end of file diff --git a/docs/manual/rewrite/proxy.html.fr.utf8 b/docs/manual/rewrite/proxy.html.fr.utf8 deleted file mode 100644 index a06510f0f8..0000000000 --- a/docs/manual/rewrite/proxy.html.fr.utf8 +++ /dev/null @@ -1,121 +0,0 @@ - - - - - -Utilisation de mod_rewrite comme mandataire - Serveur HTTP Apache Version 2.5 - - - - - - - -
<-
-

Utilisation de mod_rewrite comme mandataire

-
-

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 de la documentation de référence du module -mod_rewrite. Il décrit comment utiliser le drapeau [P] -de la directive RewriteRule pour mandater un contenu vers un autre -serveur. Plusieurs recettes décrivant des scénarios courants sont -fournies.

- -
- -
top
-
-

Mandater du contenu avec mod_rewrite

- - - -
-
Description :
- -
-

- mod_rewrite implémente le drapeau [P] qui permet de passer des URLs, - via mod_proxy, à un autre serveur. Deux exemples sont fournis ici. - Dans le premier, une URL est passée directement à un autre serveur, - et servie comme si c'était une URL locale. Dans le deuxième, nous - mandatons un contenu manquant vers un serveur d'arrière-plan.

-
- -
Solution :
- -
-

Pour passer une URL à un autre serveur, on utilise le drapeau - [P] comme suit :

- -
RewriteEngine  on
-RewriteBase    "/produits/"
-RewriteRule    "^widget/(.*)$"  "http://produits.example.com/widget/$1"  [P]
-ProxyPassReverse "/produits/objet/" "http://produits.example.com/objet/"
- - -

Dans le deuxième exemple, nous ne mandatons la requête que si nous - ne trouvons pas la ressource localement. Ceci peut s'avérer très - utile lorsque vous effectuez une migration d'un serveur vers un - autre, et que vous n'êtes pas certain que tout le contenu a déjà été - migré.

- -
RewriteCond "%{REQUEST_FILENAME}"       !-f
-RewriteCond "%{REQUEST_FILENAME}"       !-d
-RewriteRule "^/(.*)" "http://ancien.exemple.com/$1" [P]
-ProxyPassReverse "/" "http://ancien.exemple.com/"
- -
- -
Discussion :
- -

Dans les deux cas, on ajoute une directive ProxyPassReverse afin de s'assurer - que toute redirection en provenance du serveur d'arrière-plan est - renvoyée correctement au client.

- -

Chaque fois que cela est possible, préférez l'utilisation de la - directive ProxyPass ou - ProxyPassMatch à - mod_rewrite.

-
-
- -
-
-

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

-
- \ No newline at end of file diff --git a/docs/manual/rewrite/proxy.html.ja.utf8 b/docs/manual/rewrite/proxy.html.ja.utf8 deleted file mode 100644 index 5b5accf2dd..0000000000 --- a/docs/manual/rewrite/proxy.html.ja.utf8 +++ /dev/null @@ -1,117 +0,0 @@ - - - - - -mod_rewrite によるプロキシ - Apache HTTP サーバ バージョン 2.5 - - - - - - - -
<-
-

mod_rewrite によるプロキシ

-
-

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

-
-
この日本語訳はすでに古くなっている - 可能性があります。 - 最近更新された内容を見るには英語版をご覧下さい。 -
- - -

このドキュメントは mod_rewrite -リファレンスドキュメントを補足するものです。 -RewriteRule の [P] フラグを使用して他のサーバにコンテンツをプロキシする方法を -説明します。一般的なシナリオを説明するレシピがいくつか提供されています。

- -
- -
top
-
-

mod_rewrite によるコンテンツのプロキシ

- - - -
-
説明:
- -
-

- mod_rewrite は [P] フラグを提供しており、URL を - mod_proxy 経由で他のサーバに渡すことができます。ここでは - 2 つの例を示します。1 つ目の例では、URL を直接別のサーバに渡し、 - ローカル URL であるかのように提供します。もう 1 つの例では、 - 見つからないコンテンツをバックエンドサーバにプロキシします。

-
- -
解決方法:
- -
-

単純に URL を別のサーバにマッピングするには、次のように - [P] フラグを使用します:

- -
RewriteEngine  on
-RewriteBase    "/products/"
-RewriteRule    "^widget/(.*)$"  "http://product.example.com/widget/$1"  [P]
-ProxyPassReverse "/products/widget/" "http://product.example.com/widget/"
- - -

2 つ目の例では、リソースがローカルに見つからない場合にのみ - リクエストをプロキシします。これは、あるサーバから別のサーバに - 移行中で、すべてのコンテンツが移行済みかどうかわからない場合に - 非常に便利です。

- -
RewriteCond "%{REQUEST_FILENAME}"       !-f
-RewriteCond "%{REQUEST_FILENAME}"       !-d
-RewriteRule "^/(.*)"                    "http://old.example.com/$1" [P]
-ProxyPassReverse "/" "http://old.example.com/"
- -
- -
議論:
- -

どちらの場合も、バックエンドから発行されるリダイレクトが - 正しくクライアントに渡されるように ProxyPassReverse ディレクティブを - 追加しています。

- -

可能な限り mod_rewrite よりも ProxyPass や ProxyPassMatch の使用を検討してください。

-
-
- -
-
-

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

-
- \ No newline at end of file diff --git a/docs/manual/rewrite/proxy.html.ko.euc-kr b/docs/manual/rewrite/proxy.html.ko.euc-kr deleted file mode 100644 index 72d283304e..0000000000 --- a/docs/manual/rewrite/proxy.html.ko.euc-kr +++ /dev/null @@ -1,120 +0,0 @@ - - - - - -��ë¡���ë¥� ���� mod_rewrite �¬ì�� - Apache HTTP Server Version 2.5 - - - - - - - -
<-
-

��ë¡���ë¥� ���� mod_rewrite �¬ì��

-
-

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

-
-
ÀÌ ¹®¼­´Â ÃÖ½ÅÆÇ ¹ø¿ªÀÌ ¾Æ´Õ´Ï´Ù. - ÃÖ±Ù¿¡ º¯°æµÈ ³»¿ëÀº ¿µ¾î ¹®¼­¸¦ Âü°íÇϼ¼¿ä.
- - -

�� 문ì���� mod_rewrite -참조 문ì��ë¥� ë³´ì¶©�©ë����. -RewriteRule�� [P] ����ê·¸ë�� �¬ì�©í���� �¤ë¥¸ ��ë²�ë¡� ì½���ì¸�ë¥� -��ë¡������� ë°©ë��� �¤ë��©ë����. �¼ë����� ����리ì�¤ë�� �¤ë����� -�¬ë�� �����¼ê� ��ê³µë�©ë����.

- -
- -
top
-
-

mod_rewriteë¥� �¬ì�©í�� ì½���ì¸� ��ë¡���

- - - -
-
�¤ë�:
- -
-

- mod_rewrite�� [P] ����ê·¸ë�� ��ê³µí���� - mod_proxyë¥� �µí�� URL�� �¤ë¥¸ ��ë²�ë¡� - ���¬í�� �� ��ê²� �©ë����. �¬ê¸°�� �� ê°�ì§� ����ê°� ���µë����. - �� ���������� URL�� �¤ë¥¸ ��ë²�ë¡� ì§��� ���¬ë���� ë¡�ì»� - URL�� ê²�ì²��� ��ê³µë�©ë����. �¤ë¥¸ ���������� ���½ë�� - ì½���ì¸�ë¥� ë°±ì���� ��ë²�ë¡� ��ë¡����©ë����.

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

URL�� �¤ë¥¸ ��ë²��� �¨ì���� 매í�����¤ë©´ �¤ì��ê³� ê°��� - [P] ����ê·¸ë�� �¬ì�©í�©ë����:

- -
RewriteEngine  on
-RewriteBase    "/products/"
-RewriteRule    "^widget/(.*)$"  "http://product.example.com/widget/$1"  [P]
-ProxyPassReverse "/products/widget/" "http://product.example.com/widget/"
- - -

�� ë²�ì§� ���������� ë¡�컬ì���� ������ ì°¾ì�� �� ���� - ê²½ì�°ì��ë§� ��ì²��� ��ë¡����©ë����. �´ê��� �� ��ë²����� �¤ë¥¸ - ��ë²�ë¡� ë§��´ê·¸���´ì����ê³� ���¼ë©° 모ë�� ì½���ì¸�ê°� ��ì§� - ë§��´ê·¸���´ì��������ì§� ������ �� ���� �� 매ì�� ���©í�©ë����.

- -
RewriteCond "%{REQUEST_FILENAME}"       !-f
-RewriteCond "%{REQUEST_FILENAME}"       !-d
-RewriteRule "^/(.*)"                    "http://old.example.com/$1" [P]
-ProxyPassReverse "/" "http://old.example.com/"
- -
- -
���:
- -

ê°� ê²½ì�°ì�� ë°±ì�������� ë°����� 리ë�¤ì�´ë���¸ê� �´ë�¼ì�´ì�¸í�¸ì�� - �¬ë�르ê� ���¬ë����ë¡� ProxyPassReverse ì§����´ë�� - ì¶�ê°��©ë����.

- -

mod_rewrite ���� ê°��¥í��ë©� - ProxyPass ���� - ProxyPassMatchë¥� - �¬ì�©í���� ê²��� ê³��¤í��������.

-
-
- -
-
-

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

-
- \ No newline at end of file diff --git a/docs/manual/rewrite/proxy.html.tr.utf8 b/docs/manual/rewrite/proxy.html.tr.utf8 deleted file mode 100644 index 71e701ccf2..0000000000 --- a/docs/manual/rewrite/proxy.html.tr.utf8 +++ /dev/null @@ -1,117 +0,0 @@ - - - - - -Vekil Kullanımı için mod_rewrite - Apache HTTP Sunucusu Sürüm 2.5 - - - - - - - -
<-
-

Vekil Kullanımı için mod_rewrite

-
-

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

-
-
Bu çeviri güncel olmayabilir. Son değişiklikler için İngilizce sürüm geçerlidir.
- - -

Bu belge, mod_rewrite -başvuru belgelerini tamamlar. -İçeriği başka bir sunucuya vekil olarak iletmek için RewriteRule'un [P] -bayrağının nasıl kullanılacağını açıklar. Yaygın senaryoları anlatan -birkaç tarif sunulmuştur.

- -
- -
top
-
-

mod_rewrite ile İçerik Vekilleme

- - - -
-
Açıklama:
- -
-

- mod_rewrite, URL'lerin mod_proxy - aracılığıyla başka bir sunucuya iletilmesini sağlayan [P] bayrağını - sunar. Burada iki örnek verilmiştir. Birinde, bir URL doğrudan başka - bir sunucuya iletilir ve yerel bir URL gibi sunulur. Diğerinde, - eksik içeriği bir arka uç sunucusuna vekil olarak iletiriz.

-
- -
Çözüm:
- -
-

Bir URL'yi başka bir sunucuya basitçe eşlemek için [P] - bayrağını şu şekilde kullanırız:

- -
RewriteEngine  on
-RewriteBase    "/products/"
-RewriteRule    "^widget/(.*)$"  "http://product.example.com/widget/$1"  [P]
-ProxyPassReverse "/products/widget/" "http://product.example.com/widget/"
- - -

İkinci örnekte, isteği yalnızca kaynağı yerel olarak - bulamadığımızda vekil olarak iletiriz. Bu, bir sunucudan diğerine - geçiş yaparken ve tüm içeriğin taşınıp taşınmadığından emin - olmadığınızda çok yararlı olabilir.

- -
RewriteCond "%{REQUEST_FILENAME}"       !-f
-RewriteCond "%{REQUEST_FILENAME}"       !-d
-RewriteRule "^/(.*)"                    "http://old.example.com/$1" [P]
-ProxyPassReverse "/" "http://old.example.com/"
- -
- -
Tartışma:
- -

Her iki durumda da, arka uç tarafından verilen - yönlendirmelerin istemciye doğru şekilde iletilmesini sağlamak - için bir ProxyPassReverse - yönergesi ekliyoruz.

- -

Mümkün olduğunda mod_rewrite yerine ProxyPass veya ProxyPassMatch kullanmayı - değerlendirin.

-
-
- -
-
-

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

-
- \ No newline at end of file diff --git a/docs/manual/rewrite/proxy.html.zh-cn.utf8 b/docs/manual/rewrite/proxy.html.zh-cn.utf8 deleted file mode 100644 index 5bf29833a7..0000000000 --- a/docs/manual/rewrite/proxy.html.zh-cn.utf8 +++ /dev/null @@ -1,111 +0,0 @@ - - - - - -使用 mod_rewrite 进行代理 - Apache HTTP 服务器 版本 2.5 - - - - - - - -
<-
-

使用 mod_rewrite 进行代理

-
-

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

-
-
此翻译可能过期。要了解最近的更改,请阅读英文版。
- - -

本文档是 mod_rewrite -参考文档的补充。它描述了如何使用 -RewriteRule 的 [P] 标志将内容代理到另一台服务器。 -提供了若干描述常见场景的配置方案。

- -
- -
top
-
-

使用 mod_rewrite 代理内容

- - - -
-
描述:
- -
-

- mod_rewrite 提供了 [P] 标志,允许 URL 通过 - mod_proxy 传递到另一台服务器。这里给出两个示例。 - 在一个示例中,URL 被直接传递到另一台服务器,并像本地 URL 一样提供服务。 - 在另一个示例中,我们将缺失的内容代理到后端服务器。

-
- -
解决方案:
- -
-

要简单地将 URL 映射到另一台服务器,我们使用 [P] 标志,如下所示:

- -
RewriteEngine  on
-RewriteBase    "/products/"
-RewriteRule    "^widget/(.*)$"  "http://product.example.com/widget/$1"  [P]
-ProxyPassReverse "/products/widget/" "http://product.example.com/widget/"
- - -

在第二个示例中,我们仅在本地找不到资源时才代理请求。 - 当你从一台服务器迁移到另一台服务器,而不确定所有内容是否已迁移完毕时, - 这非常有用。

- -
RewriteCond "%{REQUEST_FILENAME}"       !-f
-RewriteCond "%{REQUEST_FILENAME}"       !-d
-RewriteRule "^/(.*)"                    "http://old.example.com/$1" [P]
-ProxyPassReverse "/" "http://old.example.com/"
- -
- -
讨论:
- -

在每种情况下,我们都添加了一个 ProxyPassReverse 指令, - 以确保后端发出的任何重定向都能正确地传递给客户端。

- -

请尽可能考虑使用 ProxyPass 或 ProxyPassMatch 来代替 - mod_rewrite。

-
-
- -
-
-

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

-
- \ No newline at end of file diff --git a/docs/manual/rewrite/proxy.xml b/docs/manual/rewrite/proxy.xml deleted file mode 100644 index 5e307322aa..0000000000 --- a/docs/manual/rewrite/proxy.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - Rewrite - -Using mod_rewrite for Proxying - - - -This document has been deprecated. Its content has -been merged into the -When not to use mod_rewrite document, -since simple proxying is better accomplished using -ProxyPass. This page will be -removed in a future version of this documentation. - - - - diff --git a/docs/manual/rewrite/proxy.xml.de b/docs/manual/rewrite/proxy.xml.de deleted file mode 100644 index cdb1a191ca..0000000000 --- a/docs/manual/rewrite/proxy.xml.de +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - - - Rewrite - -Verwendung von mod_rewrite für Proxying - - - -

Dieses Dokument ergänzt die mod_rewrite -Referenzdokumentation. Es beschreibt, -wie man das [P]-Flag der RewriteRule verwendet, um Inhalte an einen anderen -Server weiterzuleiten. Es werden verschiedene Rezepte bereitgestellt, die -gängige Szenarien beschreiben.

- -
-Moduldokumentation -Einführung in mod_rewrite -Umleitung und Neuzuordnung -Zugriffskontrolle -Virtuelle Hosts - -Verwendung von RewriteMap -Fortgeschrittene Techniken -Wann man mod_rewrite nicht verwenden sollte - -
- - Proxying von Inhalten mit mod_rewrite - -
-
Beschreibung:
- -
-

- mod_rewrite bietet das [P]-Flag, mit dem URLs über - mod_proxy an einen anderen Server weitergeleitet werden - können. Hier werden zwei Beispiele gegeben. In einem Beispiel wird eine - URL direkt an einen anderen Server weitergeleitet und so ausgeliefert, - als wäre sie eine lokale URL. Im anderen Beispiel leiten wir fehlende - Inhalte an einen Backend-Server weiter.

-
- -
Lösung:
- -
-

Um eine URL einfach einem anderen Server zuzuordnen, verwenden - wir das [P]-Flag wie folgt:

- - -RewriteEngine on -RewriteBase "/products/" -RewriteRule "^widget/(.*)$" "http://product.example.com/widget/$1" [P] -ProxyPassReverse "/products/widget/" "http://product.example.com/widget/" - - -

Im zweiten Beispiel leiten wir die Anfrage nur weiter, wenn wir - die Ressource nicht lokal finden können. Dies kann sehr nützlich sein, - wenn Sie von einem Server zu einem anderen migrieren und sich nicht - sicher sind, ob alle Inhalte bereits migriert wurden.

- - -RewriteCond "%{REQUEST_FILENAME}" !-f -RewriteCond "%{REQUEST_FILENAME}" !-d -RewriteRule "^/(.*)" "http://old.example.com/$1" [P] -ProxyPassReverse "/" "http://old.example.com/" - -
- -
Diskussion:
- -

In jedem Fall fügen wir eine ProxyPassReverse-Direktive hinzu, um - sicherzustellen, dass alle vom Backend ausgegebenen Umleitungen - korrekt an den Client weitergeleitet werden.

- -

Erwägen Sie, wann immer möglich, ProxyPass oder ProxyPassMatch anstelle von - mod_rewrite zu verwenden.

-
-
- -
- -
\ No newline at end of file diff --git a/docs/manual/rewrite/proxy.xml.es b/docs/manual/rewrite/proxy.xml.es deleted file mode 100644 index 31e5cbb0fa..0000000000 --- a/docs/manual/rewrite/proxy.xml.es +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - - - Rewrite - -Uso de mod_rewrite para Proxy - - - -

Este documento complementa la mod_rewrite -documentación de referencia. Describe -cómo usar la bandera [P] de RewriteRule para hacer proxy de contenido a otro servidor. -Se proporcionan varias recetas que describen escenarios comunes.

- -
-Documentación del módulo -Introducción a mod_rewrite -Redirección y remapeo -Control de acceso -Hosts virtuales - -Uso de RewriteMap -Técnicas avanzadas -Cuándo no usar mod_rewrite - -
- - Hacer proxy de contenido con mod_rewrite - -
-
Descripción:
- -
-

- mod_rewrite proporciona la bandera [P], que permite pasar URLs, - a través de mod_proxy, a otro servidor. Aquí se dan dos ejemplos. En - un ejemplo, una URL se pasa directamente a otro servidor, y se sirve - como si fuera una URL local. En el otro ejemplo, hacemos proxy del - contenido faltante a un servidor backend.

-
- -
Solución:
- -
-

Para simplemente mapear una URL a otro servidor, usamos la bandera [P], de la - siguiente manera:

- - -RewriteEngine on -RewriteBase "/products/" -RewriteRule "^widget/(.*)$" "http://product.example.com/widget/$1" [P] -ProxyPassReverse "/products/widget/" "http://product.example.com/widget/" - - -

En el segundo ejemplo, hacemos proxy de la solicitud solo si no podemos encontrar - el recurso localmente. Esto puede ser muy útil cuando está migrando - de un servidor a otro, y no está seguro de si todo el contenido - ha sido migrado todavía.

- - -RewriteCond "%{REQUEST_FILENAME}" !-f -RewriteCond "%{REQUEST_FILENAME}" !-d -RewriteRule "^/(.*)" "http://old.example.com/$1" [P] -ProxyPassReverse "/" "http://old.example.com/" - -
- -
Discusión:
- -

En cada caso, añadimos una directiva ProxyPassReverse para asegurar - que cualquier redirección emitida por el backend se pase correctamente al - cliente.

- -

Considere usar ProxyPass o ProxyPassMatch siempre que sea posible en - preferencia a mod_rewrite.

-
-
- -
- -
diff --git a/docs/manual/rewrite/proxy.xml.fr b/docs/manual/rewrite/proxy.xml.fr deleted file mode 100644 index 6ef1df322a..0000000000 --- a/docs/manual/rewrite/proxy.xml.fr +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - - - - - Rewrite - -Utilisation de mod_rewrite comme mandataire - - - -

Ce document est un complément de la documentation de référence du module -mod_rewrite. Il décrit comment utiliser le drapeau [P] -de la directive RewriteRule pour mandater un contenu vers un autre -serveur. Plusieurs recettes décrivant des scénarios courants sont -fournies.

- -
-Documentation du module -Introduction à mod_rewrite -Redirection et remise en -correspondance -Contrôle d'accès -Serveurs virtuels - -Utilisation de RewriteMap -Techniques avancées -Quand ne pas utiliser mod_rewrite - -
- - Mandater du contenu avec mod_rewrite - -
-
Description :
- -
-

- mod_rewrite implémente le drapeau [P] qui permet de passer des URLs, - via mod_proxy, à un autre serveur. Deux exemples sont fournis ici. - Dans le premier, une URL est passée directement à un autre serveur, - et servie comme si c'était une URL locale. Dans le deuxième, nous - mandatons un contenu manquant vers un serveur d'arrière-plan.

-
- -
Solution :
- -
-

Pour passer une URL à un autre serveur, on utilise le drapeau - [P] comme suit :

- - -RewriteEngine on -RewriteBase "/produits/" -RewriteRule "^widget/(.*)$" "http://produits.example.com/widget/$1" [P] -ProxyPassReverse "/produits/objet/" "http://produits.example.com/objet/" - - -

Dans le deuxième exemple, nous ne mandatons la requête que si nous - ne trouvons pas la ressource localement. Ceci peut s'avérer très - utile lorsque vous effectuez une migration d'un serveur vers un - autre, et que vous n'êtes pas certain que tout le contenu a déjà été - migré.

- - -RewriteCond "%{REQUEST_FILENAME}" !-f -RewriteCond "%{REQUEST_FILENAME}" !-d -RewriteRule "^/(.*)" "http://ancien.exemple.com/$1" [P] -ProxyPassReverse "/" "http://ancien.exemple.com/" - -
- -
Discussion :
- -

Dans les deux cas, on ajoute une directive ProxyPassReverse afin de s'assurer - que toute redirection en provenance du serveur d'arrière-plan est - renvoyée correctement au client.

- -

Chaque fois que cela est possible, préférez l'utilisation de la - directive ProxyPass ou - ProxyPassMatch à - mod_rewrite.

-
-
- -
- -
diff --git a/docs/manual/rewrite/proxy.xml.ja b/docs/manual/rewrite/proxy.xml.ja deleted file mode 100644 index 8556c394d3..0000000000 --- a/docs/manual/rewrite/proxy.xml.ja +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - Rewrite - -mod_rewrite によるプロキシ - - - -

このドキュメントは mod_rewrite -リファレンスドキュメントを補足するものです。 -RewriteRule の [P] フラグを使用して他のサーバにコンテンツをプロキシする方法を -説明します。一般的なシナリオを説明するレシピがいくつか提供されています。

- -
-モジュールドキュメント -mod_rewrite 入門 -リダイレクトとリマッピング -アクセス制御 -バーチャルホスト - -RewriteMap の使用 -高度なテクニック -mod_rewrite を使わない場合 - -
- - mod_rewrite によるコンテンツのプロキシ - -
-
説明:
- -
-

- mod_rewrite は [P] フラグを提供しており、URL を - mod_proxy 経由で他のサーバに渡すことができます。ここでは - 2 つの例を示します。1 つ目の例では、URL を直接別のサーバに渡し、 - ローカル URL であるかのように提供します。もう 1 つの例では、 - 見つからないコンテンツをバックエンドサーバにプロキシします。

-
- -
解決方法:
- -
-

単純に URL を別のサーバにマッピングするには、次のように - [P] フラグを使用します:

- - -RewriteEngine on -RewriteBase "/products/" -RewriteRule "^widget/(.*)$" "http://product.example.com/widget/$1" [P] -ProxyPassReverse "/products/widget/" "http://product.example.com/widget/" - - -

2 つ目の例では、リソースがローカルに見つからない場合にのみ - リクエストをプロキシします。これは、あるサーバから別のサーバに - 移行中で、すべてのコンテンツが移行済みかどうかわからない場合に - 非常に便利です。

- - -RewriteCond "%{REQUEST_FILENAME}" !-f -RewriteCond "%{REQUEST_FILENAME}" !-d -RewriteRule "^/(.*)" "http://old.example.com/$1" [P] -ProxyPassReverse "/" "http://old.example.com/" - -
- -
議論:
- -

どちらの場合も、バックエンドから発行されるリダイレクトが - 正しくクライアントに渡されるように ProxyPassReverse ディレクティブを - 追加しています。

- -

可能な限り mod_rewrite よりも ProxyPass や ProxyPassMatch の使用を検討してください。

-
-
- -
- -
diff --git a/docs/manual/rewrite/proxy.xml.ko b/docs/manual/rewrite/proxy.xml.ko deleted file mode 100644 index 1195c3c872..0000000000 --- a/docs/manual/rewrite/proxy.xml.ko +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - - - Rewrite - -프록시를 위한 mod_rewrite 사용 - - - -

이 문서는 mod_rewrite -참조 문서를 보충합니다. -RewriteRule의 [P] 플래그를 사용하여 다른 서버로 콘텐츠를 -프록시하는 방법을 설명합니다. 일반적인 시나리오를 설명하는 -여러 레시피가 제공됩니다.

- -
-모듈 문서 -mod_rewrite 소개 -리다이렉션과 재매핑 -접근 제어 -가상 호스트 - -RewriteMap 사용하기 -고급 기술 -mod_rewrite를 사용하지 말아야 할 경우 - -
- - mod_rewrite를 사용한 콘텐츠 프록시 - -
-
설명:
- -
-

- mod_rewrite는 [P] 플래그를 제공하여 - mod_proxy를 통해 URL을 다른 서버로 - 전달할 수 있게 합니다. 여기에 두 가지 예제가 있습니다. - 한 예제에서는 URL이 다른 서버로 직접 전달되어 로컬 - URL인 것처럼 제공됩니다. 다른 예제에서는 누락된 - 콘텐츠를 백엔드 서버로 프록시합니다.

-
- -
해결책:
- -
-

URL을 다른 서버에 단순히 매핑하려면 다음과 같이 - [P] 플래그를 사용합니다:

- - -RewriteEngine on -RewriteBase "/products/" -RewriteRule "^widget/(.*)$" "http://product.example.com/widget/$1" [P] -ProxyPassReverse "/products/widget/" "http://product.example.com/widget/" - - -

두 번째 예제에서는 로컬에서 자원을 찾을 수 없는 - 경우에만 요청을 프록시합니다. 이것은 한 서버에서 다른 - 서버로 마이그레이션하고 있으며 모든 콘텐츠가 아직 - 마이그레이션되었는지 확신할 수 없을 때 매우 유용합니다.

- - -RewriteCond "%{REQUEST_FILENAME}" !-f -RewriteCond "%{REQUEST_FILENAME}" !-d -RewriteRule "^/(.*)" "http://old.example.com/$1" [P] -ProxyPassReverse "/" "http://old.example.com/" - -
- -
토론:
- -

각 경우에 백엔드에서 발행한 리다이렉트가 클라이언트에 - 올바르게 전달되도록 ProxyPassReverse 지시어를 - 추가합니다.

- -

mod_rewrite 대신 가능하면 - ProxyPass 또는 - ProxyPassMatch를 - 사용하는 것을 고려하십시오.

-
-
- -
- -
diff --git a/docs/manual/rewrite/proxy.xml.meta b/docs/manual/rewrite/proxy.xml.meta deleted file mode 100644 index d653e3f315..0000000000 --- a/docs/manual/rewrite/proxy.xml.meta +++ /dev/null @@ -1,19 +0,0 @@ - - - - - proxy - /rewrite/ - .. - - - de - en - es - fr - ja - ko - tr - zh-cn - - diff --git a/docs/manual/rewrite/proxy.xml.tr b/docs/manual/rewrite/proxy.xml.tr deleted file mode 100644 index cab7dccb06..0000000000 --- a/docs/manual/rewrite/proxy.xml.tr +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - Rewrite - -Vekil Kullanımı için mod_rewrite - - - -

Bu belge, mod_rewrite -başvuru belgelerini tamamlar. -İçeriği başka bir sunucuya vekil olarak iletmek için RewriteRule'un [P] -bayrağının nasıl kullanılacağını açıklar. Yaygın senaryoları anlatan -birkaç tarif sunulmuştur.

- -
-Modül belgeleri -mod_rewrite'a giriş -Yeniden yönlendirme ve yeniden eşleme -Erişim denetimi -Sanal konaklar - -RewriteMap Kullanımı -İleri teknikler -mod_rewrite kullanılmaması gereken durumlar - -
- - mod_rewrite ile İçerik Vekilleme - -
-
Açıklama:
- -
-

- mod_rewrite, URL'lerin mod_proxy - aracılığıyla başka bir sunucuya iletilmesini sağlayan [P] bayrağını - sunar. Burada iki örnek verilmiştir. Birinde, bir URL doğrudan başka - bir sunucuya iletilir ve yerel bir URL gibi sunulur. Diğerinde, - eksik içeriği bir arka uç sunucusuna vekil olarak iletiriz.

-
- -
Çözüm:
- -
-

Bir URL'yi başka bir sunucuya basitçe eşlemek için [P] - bayrağını şu şekilde kullanırız:

- - -RewriteEngine on -RewriteBase "/products/" -RewriteRule "^widget/(.*)$" "http://product.example.com/widget/$1" [P] -ProxyPassReverse "/products/widget/" "http://product.example.com/widget/" - - -

İkinci örnekte, isteği yalnızca kaynağı yerel olarak - bulamadığımızda vekil olarak iletiriz. Bu, bir sunucudan diğerine - geçiş yaparken ve tüm içeriğin taşınıp taşınmadığından emin - olmadığınızda çok yararlı olabilir.

- - -RewriteCond "%{REQUEST_FILENAME}" !-f -RewriteCond "%{REQUEST_FILENAME}" !-d -RewriteRule "^/(.*)" "http://old.example.com/$1" [P] -ProxyPassReverse "/" "http://old.example.com/" - -
- -
Tartışma:
- -

Her iki durumda da, arka uç tarafından verilen - yönlendirmelerin istemciye doğru şekilde iletilmesini sağlamak - için bir ProxyPassReverse - yönergesi ekliyoruz.

- -

Mümkün olduğunda mod_rewrite yerine ProxyPass veya ProxyPassMatch kullanmayı - değerlendirin.

-
-
- -
- -
diff --git a/docs/manual/rewrite/proxy.xml.zh-cn b/docs/manual/rewrite/proxy.xml.zh-cn deleted file mode 100644 index b460e14561..0000000000 --- a/docs/manual/rewrite/proxy.xml.zh-cn +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - - - Rewrite - -使用 mod_rewrite 进行代理 - - - -

本文档是 mod_rewrite -参考文档的补充。它描述了如何使用 -RewriteRule 的 [P] 标志将内容代理到另一台服务器。 -提供了若干描述常见场景的配置方案。

- -
-模块文档 -mod_rewrite 简介 -重定向和重映射 -访问控制 -虚拟主机 - -使用 RewriteMap -高级技术 -何时不使用 mod_rewrite - -
- - 使用 mod_rewrite 代理内容 - -
-
描述:
- -
-

- mod_rewrite 提供了 [P] 标志,允许 URL 通过 - mod_proxy 传递到另一台服务器。这里给出两个示例。 - 在一个示例中,URL 被直接传递到另一台服务器,并像本地 URL 一样提供服务。 - 在另一个示例中,我们将缺失的内容代理到后端服务器。

-
- -
解决方案:
- -
-

要简单地将 URL 映射到另一台服务器,我们使用 [P] 标志,如下所示:

- - -RewriteEngine on -RewriteBase "/products/" -RewriteRule "^widget/(.*)$" "http://product.example.com/widget/$1" [P] -ProxyPassReverse "/products/widget/" "http://product.example.com/widget/" - - -

在第二个示例中,我们仅在本地找不到资源时才代理请求。 - 当你从一台服务器迁移到另一台服务器,而不确定所有内容是否已迁移完毕时, - 这非常有用。

- - -RewriteCond "%{REQUEST_FILENAME}" !-f -RewriteCond "%{REQUEST_FILENAME}" !-d -RewriteRule "^/(.*)" "http://old.example.com/$1" [P] -ProxyPassReverse "/" "http://old.example.com/" - -
- -
讨论:
- -

在每种情况下,我们都添加了一个 ProxyPassReverse 指令, - 以确保后端发出的任何重定向都能正确地传递给客户端。

- -

请尽可能考虑使用 ProxyPass 或 ProxyPassMatch 来代替 - mod_rewrite。

-
-
- -
- -