如何在mod_substitute的替换部分使用包含空格的字符串?
Apache 2.4 mod_substitute 替换含空格字符串的解决方法
方法1:用双引号包裹完整Substitute指令参数
Apache配置解析时会把空格默认当作指令参数的分隔符,所以直接在替换内容里写空格会触发语法错误。只需用双引号把整个Substitute的替换表达式包裹起来,就能让空格被识别为参数的一部分:
<Location /styles.blahblah.css> AddOutputFilterByType Substitute text/css Substitute "s|::-webkit-scrollbar{width:16px}|.button-group :first-child{display:none}::-webkit-scrollbar{width:16px}|ni" </Location>
注意不需要给替换内容额外加单引号,仅用双引号包裹整个s|匹配规则|替换内容|标志表达式即可。
方法2:结合Define变量与引号包裹
如果要使用变量存储带空格的替换内容,定义变量时用双引号包裹,同时在引用变量时把整个Substitute参数用双引号括起来:
Define css_substitution ".button-group :first-child{display:none}::-webkit-scrollbar{width:16px}" <Location /styles.blahblah.css> AddOutputFilterByType Substitute text/css Substitute "s|::-webkit-scrollbar{width:16px}|${css_substitution}|ni" </Location>
这样变量中的空格会被正确解析,不会被当作指令参数的分隔符。
核心原理
Apache的配置解析器默认以空格分割指令参数,当替换字符串包含空格时,未加引号的空格会被识别为新参数的起始,导致语法错误。用双引号包裹整个Substitute表达式后,引号内的所有内容会被视为单个完整参数,空格自然就能正常生效。
内容的提问来源于stack exchange,提问作者datastax
相关产品推荐
相关产品推荐

