main ← fix/server-side-only-urls-subfolder
opened 05:07PM - 23 Feb 26 UTC
On subfolder setups, clicking server-side-only links (e.g. upload download links… on the admin user exports page) resulted in a "page doesn't exist" error instead of downloading the file.
When Discourse runs in a subfolder (e.g. /forum), URLs like `/forum/uploads/short-url/abc.csv.gz` were not matching the SERVER_SIDE_ONLY regex patterns (e.g. `/^\/uploads\//`) because the pathname still included the subfolder prefix at the point of the check. This caused `routeTo` to hand the URL to Ember's router instead of redirecting to the server, hitting the catch-all "unknown" route.
The fix strips the subfolder prefix using `withoutPrefix()` before checking against SERVER_SIDE_ONLY patterns. The original path (with prefix) is still passed to `redirectTo`, which correctly handles both prefixed and unprefixed URLs via `getURL()`.
This only surfaced for the admin user exports page because most upload links in post content go through `click-track.js` which calls `redirectTo()` directly for `.attachment` links, bypassing `routeTo()` and its SERVER_SIDE_ONLY check entirely.
https://meta.discourse.org/t/396783