I used to do this a lot, and it always used to work (no currently active current version that I can test with, so if it has changed I don't know about it). Bolts that hit a target (from proficient or 'lucky enough' range-users) become unusable bolt-detritus in the floor tile(s) immediately before the target. A channelled back (and sides!) of the target means that bolts that miss would drop to the level below.
My target-room plans (decided in advance to be two-level constructions, so that there were no hallways below other than the 'drop zone') tended to be comb-like. Long fingers of floor led out (either as undug/rewalled block-tops from the Z-1 or long spurs of unchannelled/(re)floored constructions over a wide open Z-1) from the standing position, as far back as an archery range can be defined, at the corridor access end. Separating each comb-tooth, a single channelled/non-floored gap between the next comb-tooth (or range wall at the extreme sides) and behind the target a single channel before the 'back wall'.
Thusly:
Z=0 Z-1
######...#### ######...#### Back-wall (both levels, although access /can/ be cut into lower level)
# # #===== ===# Back-gap, ammo stockpile(s) below awaiting missed bolts
# X X ... X # #=====...===# Targets (upon floors), ammo stockpiles below
# + + + # #===== ===# Floor 'tongues' leading to Targetised tongue-tips
# + + ... + # #=====...===#
. . . . . . . . . .
. . . . . . . . . . Lengthways extension
. . . . . . . . . .
# + + ... + # #=====...===# 'Tongue' roots
# > > > # #=<=<= =<=# Access between levels (useful if this is archery limit point)
##+#+#...#+## ######...#### Access (top level, bottom level optional)
++++++ ++++ ++++++ ++++ Corridor (both levels, if wanted)
(Rotate plans to your prefered directionality.)
The ammo stockpile would perhaps be best just around the stair-footings, let haulers save the practicing archers the trip to the fall-location, where possible, but this is how I tend to do it.
Possible an I (serifed, or sideways H) 'tongue' could serve a width of firing positions, a (single, shared) path across the gap and then the equally wide width of Target positions, if it needs construction to make the floors. But as I tend to dig it out I have rarely the incentive to try anything like that. You could then also array targets cheek-to-cheek, no gaps between, for more in a space, but as bolts fired at an angle to miss the 'straight' target but hitting a neighbouring one destroy just the same as an accurate one, 50:50 chance of hitting the back-wall1 (except for edge ranges, where a side-wall recovery is possible) is my compromise. Double-width channels/range-gaps reduce off-target hits further, but at the cost of lateral space needed for a given range. Triple-width gaps might as well be SideWall1, SingleChannel1, SingleTongue, SingleChannel2, SideWall2 where SideWall2 can be a SideWall1 for an adjacent range, and vice-versa.
1 The idea is to have no-skill archers train until they're good enough to be destroying most of their ammo, rather than missing badly enough most of the time. (As I've just been ninjard about!) Then they don't need the practice to (at least as a group) be a decent force against hostile targets.