I’ve found sometimes the OSM data is to blame. The Strava route planner refused to take the rail underpass because someone had marked it as bike access: no. Rather than access: dismount. So since I was route planning a bike trip, it just wouldn’t use that path.
That makes sense, at least. The examples I'm thinking of are running routes where the tool can follow the path as long as I place an excessive number of waypoints to force its way.
This situation outright refused to route through the underpass no matter what I did. I ended up just fixing the OSM data.