<-
Apache HTTP 服务器 2.4 > Apache模块mod_substitute

Apache模块mod_substitute

描述:在响应正文上执行搜索和替换操作
状态:延期
模块标识符:替代模块
源文件:mod_substitute.c
兼容性:在Apache HTTP Server 2.2.7和更高版本中可用

摘要

mod_substitute 提供了一种在响应主体上执行正则表达式和固定字符串替换的机制。

支持Apache!

指令

错误修正清单

也可以看看

最佳

替代 指令

描述:用于过滤响应内容的模式
句法:Substitute s/pattern/substitution/[infq]
内容:目录.htaccess
覆写:文件信息
状态:延期
模块:mod_substitute

Substitute指令规定了适用于响应正文搜索和替换模式。

可以通过使用以下标志的任意组合来修改模式的含义:

i
执行不区分大小写的匹配。
n
默认情况下,模式被视为正则表达式。使用该n标志会强制将模式视为固定字符串。
f
f标志使mod_substitute替换的结果变平,允许以后在该替换的边界上进行替换。这是默认值。
q
每次替换后,该q标志将导致mod_substitute不平坦存储桶。这可能会导致更快的响应和内存使用率的降低,但是仅应在一个替换的结果不可能与后续替换的模式或正则表达式匹配的情况下使用。

所述取代可以包含文字文本和正则表达式反向引用

<Location "/">
    AddOutputFilterByType SUBSTITUTE text/html
    Substitute "s/foo/bar/ni"
</Location>

用于分隔(或“定界”)替换字符串各个部分的字符称为“定界符”,最常见的是为此使用斜杠。

如果模式或替换包含斜杠字符,则可以使用替代定界符使指令更具可读性:

使用替代定界符的示例

<Location "/">
    AddOutputFilterByType SUBSTITUTE text/html
    Substitute "s|<BR */?>|<br />|i"
</Location>

当使用正则表达式时,可以在比较和替换中使用反向引用,如以下示例所示:

使用反向引用和捕获的示例

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

一种常见的使用情况mod_substitute是前端服务器代理请求到后端服务器,该服务器返回带有硬编码嵌入式URL的HTML,这些URL引用了后端服务器。这些URL对最终用户不起作用,因为后端服务器无法访问。

在这种情况下,mod_substitute可用于将这些URL重写为可以从前端使用的URL:

重写嵌入在代理内容中的URL

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 修改Location后端服务器发送的任何(重定向)标头,在此示例中, Substitute还通过修复HTML响应来解决其余问题。

最佳

SubstituteInheritBefore 指令

描述:更改继承模式的合并顺序
句法:SubstituteInheritBefore on|off
默认:SubstituteInheritBefore off
内容:目录.htaccess
覆写:文件信息
状态:延期
模块:mod_substitute
兼容性:在httpd 2.4.17及更高版本中可用

Substitute 先(on)还是在当前上下文(off)之后应用继承的模式。 SubstituteInheritBefore本身是继承的,因此继承它的上下文(未指定其自身SubstituteInheritBefore值的上下文 )将应用最接近的已定义合并顺序。

最佳

替代MaxLineLength 指令

描述:设置最大行大小
句法:SubstituteMaxLineLength bytes(b|B|k|K|m|M|g|G)
默认:SubstituteMaxLineLength 1m
内容:目录.htaccess
覆写:文件信息
状态:延期
模块:mod_substitute
兼容性:在httpd 2.4.11及更高版本中可用

限制的最大行大小mod_substitute 限制了内存的使用。可以使用来配置限制SubstituteMaxLineLength。该值可以被给定为字节数,并且可以与一个单一的字母作为后缀bBkKmMgG以分别提供在字节,千字节,兆字节或千兆字节的大小。

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

可用语言: zh  |  fr 

最佳

注释

注意:
这不是“问答”部分。此处放置的评论应指向有关改进文档或服务器的建议,如果实施或被认为无效/偏离主题,我们的主持人可以将其删除。有关如何管理Apache HTTP Server的问题,应直接指向我们的IRC频道#httpd(位于Freenode上),或发送至我们的邮件列表
目前,此页面已禁用评论。