提问人:ezhil 提问时间:9/8/2023 更新时间:9/8/2023 访问量:32
如何在Apache LocationMatch中编写正则表达式以匹配字符串末尾?
How to write a regex to match end of string in Apache LocationMatch?
问:
使用 Apache LocationMatch,我计划匹配请求 (mobiles.touch.json) 并仅为某些请求设置标头值。但是,标头不是。我不确定我现在使用的正则表达式是否正确。所以我尝试关注 Apache,但没有任何效果。你有什么建议吗?
网址
${domainname}:/abc/abc/abc/jp/mobiles.touch.json, ${domainname}:/xyz.net/ert/ert/ert/mobiles.touch.json,
${domainname}:/abc/def/def/as/mobiles.touch.json
选项 1
<LocationMatch “/mobiles.touch.json”> 选项 2 <LocationMatch “/(mobiles.touch.json)”> 选项 3
<LocationMatch “/mobiles.touch.json$”>
答:
1赞
Patrick Janser
9/8/2023
#1
你的最后一个几乎是正确的。你必须按原样转义这些点
用于匹配任何字符。.
<LocationMatch "/mobiles\.touch\.json$">
Header always set X-My-Header "My-Value"
</LocationMatch>
还要检查服务器上是否启用了此功能。您可以检查
通过列出“mods-enabled”中的所有符号链接
文件夹:mod_headers
ls /etc/apache2/mods-enabled
您可以自己创建符号链接,也可以使用 Apache 的 工具:
sudo a2enmod headers
另请注意,不能在文件中使用。它必须放在虚拟主机或服务器配置文件中。<LocationMatch>
.htaccess
如果你需要它,那么你可以用一个替换它:.htaccess
RewriteRule
RewriteEngine On
RewriteRule /mobiles\.touch\.json$ - [ENV=MOBILES_TOUCH:true]
Header always set X-My-Header "My-Value" env=MOBILES_TOUCH
评论
0赞
Patrick Janser
9/8/2023
@ezhil 欢迎!是失踪了吗?还是选项起了作用?因为,实际上,你也应该工作。您的第 3 种模式的唯一问题是,由于含义为“any char”,它会匹配“/something/mobiles-touch-json”或其他变体。mod_headers
always
"/mobiles.touch.json$"
.
0赞
ezhil
9/13/2023
感谢您的留言。@patrick,实际上我在 LocationMarch 中添加了“SubstituteMaxLineLength 7m”值。但它不起作用。我检查了mod_headers是否已启用。我需要检查任何内容来添加“SubstituteMaxLineLength”吗?
0赞
Patrick Janser
9/13/2023
@ezhil : 根据 Apache 关于 SubstituteMaxLineLength 的文档,它是模块的一部分,因此您必须启用这个模块,而不是 .文档总是说明哪个模块正在提供该功能。但我不确定我是否理解:你说你想设置一些特定的标头,但实际上,替代模块似乎是为了改变正文响应,而不是标头。最好解释一下您在问题中的明确意图是什么。您想更改 JSON?mod_substitute
mod_headers
0赞
ezhil
9/19/2023
感谢您的输入。是的,我想要一些标题并替换上述标题匹配的值。我检查了apache中启用的mod_headers和mod_substitute模块。
评论