Regex 使用mod_头更改cookie域

Regex 使用mod_头更改cookie域,regex,apache,cookies,mod-headers,Regex,Apache,Cookies,Mod Headers,我们正在将我们的网站拆分为多个子域,我们现有的所有cookie都绑定到一个域。我正在尝试使用Apache编辑cookies以重置域,但是我在正确的方式上遇到了问题 问题是Cookie头包含多个不同顺序和大小写的元组,甚至可能不包括域 我探索了使用mod_rewrite,因为它有很多灵活性,但这似乎适用于所有请求COOKIE、%{HTTP_COOKIE},而不是单个响应COOKIE。我需要修改响应中的每个cookie 我已经用mod_header进行了实验,并找到了一个解决方案,但我恐怕我只能让元

我们正在将我们的网站拆分为多个子域,我们现有的所有cookie都绑定到一个域。我正在尝试使用Apache编辑cookies以重置域,但是我在正确的方式上遇到了问题

问题是Cookie头包含多个不同顺序和大小写的元组,甚至可能不包括域

我探索了使用mod_rewrite,因为它有很多灵活性,但这似乎适用于所有请求COOKIE、%{HTTP_COOKIE},而不是单个响应COOKIE。我需要修改响应中的每个cookie

我已经用mod_header进行了实验,并找到了一个解决方案,但我恐怕我只能让元组以正确的顺序出现

Header edit Set-Cookie "^([^;]*;).*((?i)(Path|Expires)=.*)$"  "$1 Domain=.domain.com; $2"
这还假设HttpOnly和Secure如果存在的话,那么它们位于末尾。这是一个安全的赌注,因为我们的后端没有设置它们,Apache稍后会追加它们

后端是一些Java应用程序。虽然更改它们可能是一种长期的方法,但我目前仅限于位于Java层前面的Apache层

我尝试了以下操作,但它要求域存在

Header edit Set-Cookie "^(.*)((?i)(Domain)=[^,;]*[,;]?)(.*)$"  "$1 Domain=.domain.com; $4"
我已经尝试使域组成为可选的,但是第一个组变得贪婪,即使域元组存在。如果域元组不存在,我不在乎是否有任何组变得贪婪。即使将其编码为lazy也无济于事

Header edit Set-Cookie "^(.*?)((?i)(Domain)=[^,;]*[,;]?)?(.*)$"  "$1 Domain=.domain.com; $4"
有什么建议吗?我的正则表达式技能是反复试验的,但我的直觉告诉我这是可行的

谢谢,韦斯


奖金问题:

我需要支持多个域,因为随着我们从开发迁移到生产,它们会发生变化。我可以在设置或附加标题变量时使用环境变量,但在编辑它们时不能使用。任何建议

这适用于值中的环境变量

Header append Access-Control-Allow-Origin        "%{HTTP_ORIGIN}e" env=HTTP_ORIGIN
这与替换中的环境变量无关

Header edit Set-Cookie "([^;]*;).*(Path=.*)"     "$1 Domain=.%{cookieDomain}e; $2"