Breaking change: Exclusion setting split and new checks by default
Split exclusion settings
Today, one setting used to hold both your own exclusions and the static-file extensions.
It is now two settings with one job each:
| Setting | Holds | Default |
|---|---|---|
DATADOME_URL_REGEX_EXCLUSION | your URLs to always skip | empty |
DATADOME_STATIC_ASSET_EXCLUSION (new) | the static-file extensions | on, standard list |
What to do on upgrade
- You never set a custom exclusion → nothing to do. The standard list applies automatically.
- You set a custom exclusion → remove the static-file patterns from it and keep
only your own URLs. The extensions are handled by the new setting.
- DATADOME_URL_REGEX_EXCLUSION="/health|/heartbeat|\.(css|js|png|jpg|svg|woff2|ico)$"
+ DATADOME_URL_REGEX_EXCLUSION="/health|/heartbeat"Additional URI checks enabled by default
This release introduces two URI checks that are enabled by default. They affect how DataDome normalizes and evaluates URLs before applying exclusion rules. Review each setting and disable it only if necessary for compatibility with your application.
1. Matrix parameters (;…) are ignored before matching
;…) are ignored before matchingDATADOME_REMOVE_MATRIX_PARAMS : default: on
A URL path may carry parameters after a ; (for example ;jsessionid=…). Some frameworks ignore them when routing, so DataDome now ignores them before matching the extension, exactly as query parameters after ? are already ignored.
Removal stops at the next /, and only ; is affected.
| Request | Path used for matching | Result |
|---|---|---|
/api;.zip | /api | inspected no longer looks like a .zip |
/product;sid=abc.json | /product | inspected |
/app.js; | /app.js | skipped a genuine asset stays skipped |
/items;a=1/data.json | /items/data.json | skipped a genuine asset stays skipped |
Set it to off to keep the previous behavior.
2. Encoded characters cancel the static-asset skip
DATADOME_ENCODED_CHAR_INCLUSION : regex, default: on (%23 %25 %2f %3b %3f)
Some encoded characters are delimiters that your origin decodes and routes on, while
the module only sees a clean .zip or .js ending. When a path looks like a static
file and contains one of these encoded delimiters, DataDome inspects it instead
of skipping it.
| Encoded | Decodes to | Example | Result |
|---|---|---|---|
%23 | # | /product%23a.zip | inspected |
%25 | % | /product%25a.zip | inspected |
%2f | / | /product%2fa.zip | inspected |
%3b | ; | /product%3ba.zip | inspected |
%3f | ? | /product%3fa.zip | inspected |
any other, e.g. %2e | . | /product%2ea.zip | skipped — genuine asset |
Uppercase and lowercase hex are both matched (%2F and %2f).
Set to "" to keep the previous behavior.
Updated 2 days ago

