Descripción: Realizar operaciones de búsqueda y reemplazo en cuerpos de respuesta.
Estado: Extensión
ModuleIdentifier: sustituto_module
Archivo fuente: mod_substitute.c
Compatibilidad: Disponible en Apache HTTP Server 2.2.7 y posterior

Resumen

mod_substitute proporciona un mecanismo para realizar expresiones regulares y fijas string sustituciones en los órganos de respuesta.

Directiva sustitutiva

Descripción: Patrón para filtrar el contenido de la respuesta
Sintaxis:
Substitute s/pattern/substitution/[infq]
Contexto: directorio, .htaccess
Anular: Información del archivo
Estado: Extensión
Módulo: mod_substitute

los Substitute La directiva especifica un patrón de búsqueda y reemplazo para aplicar al cuerpo de la respuesta.

El significado del patrón se puede modificar utilizando cualquier combinación de estos indicadores:

i
Realice una coincidencia que no distinga entre mayúsculas y minúsculas.
n
De forma predeterminada, el patrón se trata como una expresión regular. Utilizando el n bandera obliga al patrón a ser tratado como un string.
f
los f causas de la bandera mod_substitute para aplanar el resultado de una sustitución que permita que las sustituciones posteriores tengan lugar en el límite de esta. Este es el predeterminado.
q
los q causas de la bandera mod_substitute para no aplanar los cubos después de cada sustitución. Esto puede resultar en una respuesta mucho más rápida y una disminución en la utilización de la memoria, pero solo debe usarse si no hay posibilidad de que el resultado de una sustitución coincida con un patrón o expresión regular de una subsiguiente.

los sustitución Puede contener texto literal y referencias inversas de expresiones regulares.

Ejemplo


    AddOutputFilterByType SUBSTITUTE text/html
    Substitute "s/foo/bar/ni"

El carácter que se utiliza para separar (o “delimitar”) las distintas partes de la sustitución. string se conoce como el “delimitador”, y es más común utilizar una barra inclinada para este propósito.

Si el patrón o la sustitución contienen un carácter de barra, se puede usar un delimitador alternativo para hacer que la directiva sea más legible:

Ejemplo de uso de un delimitador alternativo


    AddOutputFilterByType SUBSTITUTE text/html
    Substitute "s|
|
|i"

Las referencias inversas se pueden utilizar en la comparación y en la sustitución, cuando se utilizan expresiones regulares, como se ilustra en el siguiente ejemplo:

Ejemplo de uso de referencias inversas y capturas


    AddOutputFilterByType SUBSTITUTE text/html
    # "foo=k,bar=k" -> "foo/bar=k"
    Substitute "s|foo=(w+),bar=1|foo/bar=$1|"

Un escenario de uso común para mod_substitute es la situación en la que un servidor de aplicaciones para el usuario envía solicitudes a un servidor de servicios de fondo que devuelve HTML con URL incrustadas codificadas que se refieren al servidor de servicios de fondo. Estas URL no funcionan para el usuario final, ya que no se puede acceder al servidor back-end.

En este caso, mod_substitute se puede usar para reescribir esas URL en algo que funcione desde el front-end:

Reescritura de URL incrustadas en contenido proxy

ProxyPass        "/blog/" "http://internal.blog.example.com/"
ProxyPassReverse "/blog/" "http://internal.blog.example.com/"

Substitute "s|http://internal.blog.example.com/|http://www.example.com/blog/|i"

ProxyPassReverse modifica cualquier Location (redireccionar) encabezados que son enviados por el servidor back-end y, en este ejemplo, Substitute se encarga del resto del problema arreglando también la respuesta HTML.

Sustituto Heredar Antes Directiva

Descripción: Cambiar el orden de fusión de los patrones heredados
Sintaxis:
SubstituteInheritBefore on|off
Defecto:
SubstituteInheritBefore off
Contexto: directorio, .htaccess
Anular: Información del archivo
Estado: Extensión
Módulo: mod_substitute
Compatibilidad: Disponible en httpd 2.4.17 y posterior

Ya sea para aplicar lo heredado Substitute patrones primeroon), o después de los del contexto actual (off). SubstituteInheritBefore se hereda en sí mismo, por lo tanto, los contextos que lo heredan (aquellos que no especifican su propio SubstituteInheritBefore value) aplicará el orden de fusión definido más cercano.

Directiva SubstituteMaxLineLength

Descripción: Establecer el tamaño máximo de línea
Sintaxis:
SubstituteMaxLineLength bytes(b|B|k|K|m|M|g|G)
Defecto:
SubstituteMaxLineLength 1m
Contexto: directorio, .htaccess
Anular: Información del archivo
Estado: Extensión
Módulo: mod_substitute
Compatibilidad: Disponible en httpd 2.4.11 y posterior

El tamaño máximo de línea manejado por mod_substitute se limita a restringir el uso de la memoria. El límite se puede configurar usando SubstituteMaxLineLength. El valor se puede dar como el número de bytes y se puede agregar como sufijo una sola letra b, B, k, K, m, M, g, G para proporcionar el tamaño en bytes, kilobytes, megabytes o gigabytes respectivamente.

Ejemplo


    AddOutputFilterByType SUBSTITUTE text/html
    SubstituteMaxLineLength 10m
    Substitute "s/foo/bar/ni"