Search code examples
regexapache.htaccesscookiesregex-lookarounds

Negative lookahead regex for apache mod header cookies - keep certain cookies


Trying to modify an apache request header directive, I need to use a negative lookahead regex to keep only certain cookies.

Test string

someCookie=someValue; anotherCookie=yada61; cookieToKeep1=myValue; cookieToKeep2=myValue2; lastCookie=yada1

Trying to remove all cookies but cookieToKeep1 and cookieToKeep2.

I can use the below regex but only matches the name and not the = and cookie value.

\\b((?!cookieToKeep1=\[^;\]*|cookieToKeep2=\[^;\]*).)\\S+

Apache directive that I tried:

RequestHeader edit Cookie "(\b((?!cookieToKeep1=[^;]*|cookieToKeep2=[^;]*).)\S+)" ""

Solution

  • You can use this directive to remove all cookies except cookieToKeep1 and cookieToKeep2:

    RequestHeader edit* Cookie "\b(?!(?:cookieToKeep1|cookieToKeep2)=)([^;=]+=[^;]*(?:; *|$))" ""
    

    RequestHeader edit* performs multiple search and replacements.

    RegEx Demo