RGJ
(Richard - Communiteq)
February 23, 2026, 11:09am
1
The short-url link to a user export on the user admin page does not work when running in a subfolder setup, it returns a “Oops! That page doesn’t exist or is private” page.
The link does work from within the PM that is sent.
When pressing F5 on the “Not found” page, or when right-clicking the link, the file downloads as well, so this looks like an Ember routing issue.
Line: discourse/frontend/discourse/admin/components/admin-user-exports-table.gjs at 6759ad71cac395697b2978eb34fcfbf1162d30d1 · discourse/discourse · GitHub
Quick (and, I guess, dirty) fix: add target="_blank"
3 Likes
Thanks @RGJ That’ll be fixed by
main ← fix/server-side-only-urls-subfolder
merged 05:32PM - 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
3 Likes