什么可能导致Apache mod_filter和mod_substitute过度替换

时间:2017-06-14 22:50:56

标签: apache substitution mod-filter

我对下面过滤器的意图是更改< title>从测试目录提供的任何页面的标记,以“Test”为前缀。所以

<TITLE>Foo Bar Report</TITLE>

将替换为

<TITLE>Test Foo Bar Report</TITLE>

过滤器是:

<Directory ~ "/local/test/\w+/(bin|htdocs|perl|sql)/">
    FilterDeclare DECLARE_TEST CONTENT_SET
    FilterProvider DECLARE_TEST SUBSTITUTE "%{CONTENT_TYPE} =~ m|^text/html|"
    FilterChain DECLARE_TEST
    Substitute "s/(^\s*<TITLE>|pagetitle=|script=.*&title=)/$1T:/i"
</Directory>

配置中的某些内容导致输出

<TITLE>Test Test Test Test Foo Bar Report</TITLE>

因此,过滤器似乎已经应用了四次而不是预期的单次时间。

我的配置中的其他地方可能会导致这种情况发生?因此,我需要更改/启用/禁用以解决此问题?

1 个答案:

答案 0 :(得分:0)

这个问题的原因是我做了一个不正确的假设。

我认为指定的过滤器在置于其自己的conf文件中,然后包含在具有 Include 指令的虚拟主机中时,将仅适用于该虚拟主机。

事实证明,conf文件包含在4个虚拟主机中,随后应用了4次。

根据模块化和时间行为目标,存在许多可能的解决方案。